如何以反向时间顺序列出目录和子目录中的所有文件?

我想做一些像ls -t这样的东西,但是也要包含子目录中的文件。 但是问题是我不想像ls -R那样把输出格式化,就是这样:

 [test]$ ls -Rt b testdir test ./testdir: a 

我希望它被格式化为find命令显示子目录中的文件。 即:

 [test]$ find . . ./b ./test ./testdir ./testdir/a 

但是,似乎没有find是按照时间顺序按上次更新时间sorting。

那么我怎么能列出目录和子目录中的所有文件,格式是find ,但是按照反向时间顺序?

试试这个:

 find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\ -f2- 

ls -lR是显示主目录ls -lR | more所有文件,目录和子目录 ls -lR | more用于显示stream中的所有文件。

如果您要查看的文件数量符合最大参数限制,则可以使用globbing来获得所需内容,如果您有globstar支持,则使用recursion方式。

正好2层深: ls -d * */*

使用globstar,recursion使用: ls -d **/*

ls-d参数告诉它不要recursion作为parameter passing的目录(因为你正在使用shell通配符来执行recursion)。 这可以防止ls使用recursion格式。

 find -type f -print0 | xargs -0 ls -t 

缺点:只适用于一定数量的文件。 如果文件数量极其庞大,则需要更复杂的文件

试试find . -type d find . -type dfind . -type d -ls find . -type d -ls

尝试这个:

 ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d' 

在wfg5475的答案中的命令是正常工作,只需要添加一件事情,只显示目录&子目录中的文件:

 ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d' 

增加了一件事情: ^d忽略列表输出中的所有目录