所以这是交易。假设我有一个名为“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 /目录的最后修改日期报告为此目录中任何文件/目录的最新修改日期,递归。
我该怎么做?
答案 0 :(得分:50)
类似的东西:
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
说明:
答案 1 :(得分:19)
如果您的find
版本(例如GNU find
)支持-printf
,则无需重复调用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" *
答案 2 :(得分:6)
如果可以,我会投票支持保罗的答案。我测试了它并理解了这个概念。我可以确认它有效。
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来解决他的问题?那应该是明确的。
答案 3 :(得分:0)
在我看来,很简单:EXTRA_USERS_PARAMS = "usermod -p 'abc\$1234' root;"
可以完成工作...