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

dan*_*dan 60 unix ls find

我想做类似的事情,ls -t但也包括子目录中的文件.但问题是我不希望输出形成像do ls -R,这是这样的:

[test]$ ls -Rt
b       testdir test

./testdir:
a
Run Code Online (Sandbox Code Playgroud)

我希望它的格式就像find命令显示子目录中的文件一样.即:

[test]$ find .
.
./b
./test
./testdir
./testdir/a
Run Code Online (Sandbox Code Playgroud)

find似乎没有做的是按最后更新时间按时间顺序排序结果.

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

小智 84

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

  • 对不起,但我不明白为什么这会在主目录中列出内容?标志"R"用于递归列出子目录,我在ls手册页中看不到对主目录的引用.正如我所知,无论你身在何处,它都会列出子目录. (2认同)
  • 好的、直接的答案:) (2认同)

mar*_*rco 40

试试这个:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,这仅适用于GNU的查找.好吧,至少,FreeBSD上的find不支持printf命令. (3认同)
  • 不是“找到”吗?-type f -printf "%p\n"` 够了吗? (2认同)

Par*_*eta 13

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

对于2层深度使用: ls -d * */*

使用globstar,用于递归使用: ls -d **/*

-d参数ls告诉它不要递归作为参数传递的目录(因为你使用shell globbing来进行递归).这可以防止ls使用其递归格式.


小智 6

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

  • 您能否添加更多关于为什么这会回答问题的解释。 (4认同)