Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 获取文件夹(或子文件/文件夹)上次修改日期和时间_Macos_Bash - Fatal编程技术网

Macos 获取文件夹(或子文件/文件夹)上次修改日期和时间

Macos 获取文件夹(或子文件/文件夹)上次修改日期和时间,macos,bash,Macos,Bash,是否可以获取文件夹的修改日期和时间? 我知道您可以使用stat-f“%m”文件夹,但它不反映子文件/文件夹的更改 不起作用的事情: ls-l文件夹-不反映文件夹内的更改 stat-f“%m”文件夹-同上 date-r文件夹-再次相同 find foo bar baz-printf-我的find版本上不存在printf选项 事物的版本: 操作系统:Mac OS X 10.7.1 Bash:GNUBash,版本3.2.48(1)-发行版(x86_64-apple-darwin11) 您可以尝试

是否可以获取文件夹的修改日期和时间?
我知道您可以使用
stat-f“%m”文件夹
,但它不反映子文件/文件夹的更改

不起作用的事情:

  • ls-l文件夹
    -不反映文件夹内的更改
  • stat-f“%m”文件夹
    -同上
  • date-r文件夹
    -再次相同
  • find foo bar baz-printf
    -我的find版本上不存在
    printf
    选项
事物的版本:

  • 操作系统:Mac OS X 10.7.1
  • Bash:GNUBash,版本3.2.48(1)-发行版(x86_64-apple-darwin11)

您可以尝试使用“日期-r文件夹”为您提供上次修改的日期

您始终可以从
ls
获取该日期:

ls -ld mydir | awk -F' '  '{ print $6 " "$7 }'
解决方案:

find . -exec stat -f "%m" \{} \; | sort -n -r | head -1
说明:

  • find
    命令遍历当前目录(
    ),并对遇到的每个文件执行(
    -exec
    )命令
    stat-f“%m”
    stat-f“%m”
    打印文件的最后修改unix时间戳
  • sort-n-r
    按相反顺序(
    -r
    )对
    find
    命令的输出进行数字排序(
    -n
    )。这将首先列出最新的修改时间戳
  • head-1
    然后从
    sort
    中提取输出的第一行。这是所有文件的最新修改unix时间戳

  • -r seconds打印以秒表示的日期和时间,其中秒是自纪元(UTC,1970年1月1日,00:00:00;请参阅时间(3))以来的秒数,可以用十进制、八进制或十六进制指定。
    +1@Tylio但要澄清-“date-r文件夹+'%s'”-将返回纪元后的秒数查看“日期--帮助”了解更多信息information@ChrisK
    -r
    表示GNU
    date
    中的参考文件,这似乎是您在BSD
    date
    (Mac OS X使用的风格)中所指的参考文件,其行为如Tyilo的评论中所述尝试此处列出的答案:无,在Mac OS X 10.7.1的
    find
    中未实现
    printf
    选项时,它们中的任何一个都可以工作。您是否在特定目录中查找最近修改的文件或目录?您希望得到多大的递归性?我更熟悉GNU/Linux方面的内容,而不是BSD风格
    find-printf
    通常很有用,但如果没有它,您可能可以使用
    ls-lRt | head-n1
    -t
    用于mtime排序,
    -R
    用于递归列表)@Tyilo是的,您是对的<代码>ls无论如何都不是最好的方法。可能类似于
    find-execdir stat-f'%m%N'\{}\\|排序-nr | head-n1
    替换
    find-printf
    。此示例仍然需要添加空终止符以正确处理所有文件名,但总体思路应该可行。不考虑子文件我不确定“子文件”是什么意思,但是在我的系统中,在目录中创建的新文件将更新父目录修改时间。@JJ不在我的目录中不幸的是,YODD。我使用Ubuntu Linux FWIW.im使用Lubuntu 13.04,在子文件夹中创建新文件不会更新父目录。如果能了解每个部分的工作原理,该命令会使我的计算机崩溃。@hermanningjaldson添加了一个解释。如果您使用的是基于Linux的操作系统,而不是基于BSD的操作系统,这可能不适用于您。如果有人删除文件夹中的文件,这会提供错误的信息。例如,假设您正试图维护一个文件夹的md5哈希,并且希望知道何时重新计算它。那么这就行不通了。。。