我想做ls -t
之类的事情,但也包含子目录中的文件。但问题是我不希望像ls -R
那样形成输出,这是这样的:
[test]$ ls -Rt
b testdir test
./testdir:
a
我希望它的格式就像find
命令显示子目录中的文件一样。即:
[test]$ find .
.
./b
./test
./testdir
./testdir/a
但是find
似乎没有做的是按照上次更新时间按时间顺序排序结果。
那么如何以find
的格式列出目录和子目录中的所有文件,但是按时间倒序排列?
答案 0 :(得分:76)
ls -lR
用于显示主目录中的所有文件,目录和子目录
ls -lR | more
用于显示流中的所有文件。
答案 1 :(得分:36)
试试这个:
find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\ -f2-
答案 2 :(得分:9)
如果你想要查看的文件数量符合最大参数限制,你可以使用globbing来获得你想要的东西,如果你有globstar支持,可以使用递归。
对于2层深度使用:ls -d * */*
使用globstar,用于递归:ls -d **/*
-d
的{{1}}参数告诉它不要递归作为参数传递的目录(因为你使用shell globbing来进行递归)。这可以防止ls
使用其递归格式。
答案 3 :(得分:3)
find -type f -print0 | xargs -0 ls -t
缺点:仅适用于一定数量的文件。如果你有大量的文件,你需要更复杂的东西
答案 4 :(得分:3)
尝试
find . -type d
要么
find . -type d -ls
答案 5 :(得分:2)
试试这个:
ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'
答案 6 :(得分:1)
wfg5475's answer中的命令工作正常,只需要添加一个东西来显示目录中的文件&子目录:
ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'
添加了一件事:^d
忽略列表输出中的所有目录