事情是这样的。假设我有一个名为"web“的目录,所以
$ ls -la
drwx------ 4 rimmer rimmer 4096 2010-11-18 06:02 web
但在此目录中,web/php/
$ ls -la
-rw-r--r-- 1 rimmer rimmer 1957 2011-01-05 08:44 index.php
这意味着即使我的目录/web/php/index.php的内容最后一次修改是在2011-01-05,/web/目录本身被报告为最后一次修改是在2010-11-18。
我需要做的是递归地将我的/web/目录的最后修改日期报告为该目录中任何文件/目录的最新修改日期。
我该怎么做呢?
发布于 2011-02-15 06:18:58
如果您有一个支持-printf
的find
版本(比如GNU find
),那么就不需要重复调用stat
:
find /some/dir -printf "%T+\n" | sort -nr | head -n 1
或
find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1
但是,如果您不需要递归:
stat --printf="%y\n" *
发布于 2011-02-15 06:17:28
如果可以的话,我会投票给保罗的答案。我对它进行了测试,并理解了它的概念。我可以确定它是有效的。find
命令可以输出许多参数。例如,将以下内容添加到--printf
子句:
%a for attributes in the octal format
%n for the file name including a complete path
示例:
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
让我也提出这个问题:这个问题的作者是想使用Bash还是PHP来解决他的问题?这应该被指定。
发布于 2020-06-30 16:11:33
在我看来很简单:ls -lt mydirectory
完成了这项工作...
https://stackoverflow.com/questions/4997242
复制相似问题