在shell脚本中输出find命令

时间:2015-10-23 07:06:11

标签: shell

我需要在shell中执行以下命令;它会给出一个排序列表吗?

find -type f -exec ls -t {} \; 

1 个答案:

答案 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标准化。