我需要在shell中执行以下命令;它会给出一个排序列表吗?
find -type f -exec ls -t {} \;
答案 0 :(得分:1)
这样编写,ls
命令一次运行一个文件,无论顺序find
碰巧遇到什么顺序,所以没有任何有意义的时间排序。
如果您的find
版本支持POSIX 2008 +
表示法,则可以使用:
find . -type f -exec ls -t {} +
这将ls
按时间顺序列出每组文件,但如果命令运行多次(大量文件),那么每个批次都会被订购,但这些组可能就是这样文件453是按照提供的顺序在文件2912之后创建的。
如果您需要对它们进行排序而不管文件数量是多少,那么您可能需要使用stat
命令将文件名和修改时间作为数字打印,然后按数字排序,最后将数字删除
在Mac OS X上,您可以使用:
find . -type f -exec stat -f '%Dm %N' {} + | sort -n | awk '{print $2}'
(%Dm
将修改时间打印为十进制数; %N
打印文件名。)
但是,如果您使用的是Linux,则需要查看Linux stat
的手册页,因为它不同。如果您在其他系统上,则stat
命令可能可用,也可能不可用;它没有被POSIX标准化。