我想构建一个Linux命令,列出按访问时间排序的特定目录(和子目录)中的所有文件(及其完整路径)。
ls可以按访问时间排序,但不提供完整路径。 find给出了完整路径,但是你在访问时间上唯一的控制就是用-atime N(至少24 * N小时前访问)指定一个范围,这不是我想要的。
有没有办法按访问时间排序并立即获得完整路径?我可以写一个脚本,但似乎应该有一种方法可以用标准的Linux程序来完成。
答案 0 :(得分:20)
find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
这将找到所有文件,并按日期和时间对它们进行排序。然后,您可以使用awk
或cut
从ls -l
输出中提取日期和文件名称
答案 1 :(得分:11)
ls -l $(find /foo/bar -type f )
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参数,该参数将日期/时间值中心化,并使它们可以排序,无论它们有多大。