3

寻找通用方法如何按修改时间对随机文件列表进行排序,例如:

./make_list_of_files | some_sorter_by_mtime

我当前的解决方案是(这里make_list_of_filesfind命令):

find / -type f -print |\
  perl -nle 'push @in,$_;END {@out = sort{ (stat($a))[9] <=> (stat($b))[9] } @in; $,="\n";print @out}'

是否存在一些更简单的解决方案(例如,没有 perl)?

4

3 回答 3

6

some_sorter_by_mtime应该是例如:

xargs stat -f "%m %N" | sort -n | cut -f2-

背后的想法是:

  • 打印文件修改时间和文件名
  • 以数字方式对输出进行排序(因此按修改时间)
  • 剪掉时间场

所以,

find / -type f -print | xargs stat -f "%m %N" | sort -n | cut -f2-
于 2012-09-20T08:15:58.180 回答
2

像这样?

find / -type f -print | xargs ls -l --time-style=full-iso | sort -k6 -k7 | sed 's/^.* \//\//'
于 2012-09-20T08:48:49.483 回答
-2

是的,没有 perl:

find / -type f -exec ls -lrt '{}' \+

大师。

于 2012-09-20T07:50:47.047 回答