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


73

我想做类似的事情,ls -t但文件也包含在子目录中。但是问题是我不想像这样格式化输出ls -R

[test]$ ls -Rt
b       testdir test

./testdir:
a

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

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

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

那么,如何以目录和子目录中列出的格式列出所有文件find,但顺序却相反?


5
这不是编程问题,请使用superuser.comunix.stackexchange.com
Dan Grossman

3
我在程序中使用此命令的输出。那不是编程吗?

Answers:



113

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


4
抱歉,但是我不明白为什么这会在主目录中列出内容?标志“ R”用于递归列出子目录,我在ls手册页中看不到对主目录的引用。据我了解,无论您身在何处,它都会列出子目录。
穆罕默德·侯赛因巴希奇(MuhamedHuseinbašić)

好的直接答案:)
RPichioli

19

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

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

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

-d来的说法ls告诉它不递归作为参数传递(因为你使用的shell通配符做递归)目录。这样可以防止ls使用其递归格式。


@YoYo感谢您删除我底部的多余解释行。我尝试提交一个包含单个字符的更改的编辑,但是由于更改太小而被SO拒绝。你知道这是否有办法吗?
泰勒·埃德米斯顿,2016年

4

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


4
您能否为为什么回答这个问题添加更多解释。
克里斯·

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

缺点:仅适用于一定数量的文件。如果您有大量文件,则需要更复杂的文件


您错过了添加搜索domian的问题:find . -type f -print0 | xargs -0 ls -t但是,您的解决方案在mac os上的工作方式不同于此处列出的其他解决方案
d00d

2

尝试这个:

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

1

wfg5475的答案中的命令正常运行,只需要添加一件事即可仅显示目录和子目录中的文件:

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

增加了一件事:^d忽略清单输出中的所有目录

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.