2011-08-24 204 views
8

是否可以获取文件夹的修改日期和时间?
我知道你可以使用stat -f "%m" folder,但它并不反映子文件/文件夹的变化。获取文件夹(或子文件/文件夹)的最后修改日期和时间

的事情,不工作:

  • ls -l folder - 并不能反映文件夹内的变化
  • stat -f "%m" folder - 同上
  • date -r folder - 同样再次
  • find foo bar baz -printf - 在printf选项在我的版本上找不到
事情个

版本:

  • 操作系统:Mac OS X 10.7.1
  • 击:GNU的bash,版本3.2.48(1)-release下(x86_64-苹果darwin11)
+0

试试这里列出的答案:http://stackoverflow.com/questions/4997242/in-linux-terminal-how-do-i-show-the-folders-last-modification-date-taking-它的 – Mohammad

+0

没有,它们的工作原理是'printf'选项没有在Mac OS X的'find'中实现10.7.1 – Tyilo

+0

您是否正在寻找特定目录中最近修改过的文件或目录?你想如何递归? –

回答

13

解决方案:

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

说明:

  1. find命令遍历当前目录(.)和每个文件中遇到的执行(-exec)命令stat -f "%m"stat -f "%m"打印文件的最后修改时间戳。
  2. sort -n -r排序find命令的以相反的顺序(-r)输出数值(-n)。这将首先列出最新的修改时间戳。
  3. head -1然后从sort中提取第一行输出。这是所有文件的最新修改unix时间戳。
+0

将很好地解释每个部分正在做什么,这个命令使我的电脑崩溃。 –

+0

@HermannIngjaldsson添加了解释。如果您使用的是基于Linux的操作系统,而不是基于BSD的操作系统,那么这可能不适合您。 – Tyilo

+0

如果有人删除文件夹中的文件,会给出错误信息。比如说你正在尝试为一个文件夹维护一个md5散列,并且想知道何时重新计算它。然后这不会工作... – Cookie

5

你可以尝试“日期-r文件夹”,给你一个最后修改日期

+4

'-r秒 打印秒数表示的日期和时间,其中秒数为 自纪元(00:00:00 UTC,1月1日, 1970;请参阅时间(3))以来的秒数,可以是指定十进制,八进制或 十六进制。' – Tyilo

+0

+1 @Tylio但是要说明 - “date -r文件夹+'%s'” - 将返回自“epoch”查看“date --help”以来的秒数以获取更多信息 – ChrisK

+4

@ChrisK'-r'表示GNU'date'中的参考文件,它似乎是你在BSD'date'(Mac OS X使用的风格)时所指的内容,它的行为如同Tyilo的评论 – jw013

0

你总是可以从ls得到它:

ls -ld mydir | awk -F' ' '{ print $6 " "$7 }' 
+0

中所引用的那样考虑子文件 – Tyilo

+0

我不确定你的意思是“子文件”,但是在我的系统中,在目录中创建的新文件将更新父目录修改时间。 –

+0

@JJ不在我的遗憾 – Tyilo

相关问题