列出目录(和子目录)中的所有文件(带完整路径),按访问时间排序

时间:2012-03-08 15:21:17

标签: linux bash find ls

我想构建一个Linux命令,列出按访问时间排序的特定目录(和子目录)中的所有文件(及其完整路径)。

ls可以按访问时间排序,但不提供完整路径。 find给出了完整路径,但是你在访问时间上唯一的控制就是用-atime N(至少24 * N小时前访问)指定一个范围,这不是我想要的。

有没有办法按访问时间排序并立即获得完整路径?我可以写一个脚本,但似乎应该有一种方法可以用标准的Linux程序来完成。

5 个答案:

答案 0 :(得分:20)

find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7

这将找到所有文件,并按日期和时间对它们进行排序。然后,您可以使用awkcutls -l输出中提取日期和文件名称

答案 1 :(得分:11)

你可以尝试:

 ls -l $(find /foo/bar -type f )
  • 您可以添加其他选项(例如-t进行排序)到ls命令以实现您的目标。
  • 您也可以将搜索条件添加到find cmd

答案 2 :(得分:3)

find . -type f | xargs ls -ldt应该可以做到这一点,只要没有那么多的文件可以像命令限制那样命中命令并产生ls的2个实例。

答案 3 :(得分:2)

pwd | xargs -I % find % -type f

答案 4 :(得分:1)

find . -type f -exec ls -l --full-time {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7

亚历克斯的答案对我不起作用,因为我有超过一年的文件而且排序搞砸了。上面添加了--full-time参数,该参数将日期/时间值中心化,并使它们可以排序,无论它们有多大。