Unix 如何按逆时间顺序列出目录和子目录中的所有文件?

Unix 如何按逆时间顺序列出目录和子目录中的所有文件?,unix,find,ls,Unix,Find,Ls,我想做一些类似于ls-t的事情,但也要包含子目录中的文件。但问题是我不希望输出的格式像ls-R那样,如下所示: [test]$ ls -Rt b testdir test ./testdir: a 我希望它的格式类似于find命令在子目录中显示文件。即: [test]$ find . . ./b ./test ./testdir ./testdir/a 但是,find似乎并没有按照上次更新时间按时间顺序排列结果 那么,我如何以find的格式列出目录和子目录中的所有文件,但按时间

我想做一些类似于
ls-t
的事情,但也要包含子目录中的文件。但问题是我不希望输出的格式像ls-R那样,如下所示:

[test]$ ls -Rt
b       testdir test

./testdir:
a
我希望它的格式类似于
find
命令在子目录中显示文件。即:

[test]$ find .
.
./b
./test
./testdir
./testdir/a
但是,
find
似乎并没有按照上次更新时间按时间顺序排列结果

那么,我如何以
find
的格式列出目录和子目录中的所有文件,但按时间倒序排列呢

find -type f -print0 | xargs -0 ls -t
缺点:只适用于一定数量的文件。如果文件量非常大,则需要更复杂的文件

试试这个:

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

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

试试看
find-d类
find-键入d-ls

尝试以下操作:

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

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

仅用于两层深度使用:
ls-d**/*

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

ls
-d
参数告诉它不要递归作为参数传递的目录(因为您正在使用shell globbing进行递归)。这将阻止ls使用其递归格式。

中的命令工作正常,只需添加一项内容即可仅显示目录和子目录中的文件:

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

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

这不是编程问题,请使用,我正在程序中使用此命令的输出。这不是程序设计吗?你能解释一下为什么这会回答这个问题吗。仅供参考,这只适用于GNU的发现。至少,FreeBSD上的find不支持printf命令。它不是
find-键入f-printf“%p\n”
够了吗?@YoYo感谢您删除我在底部多余的解释行。我试图提交一个带有单个字符更改的编辑,但由于更改太小而被SO拒绝。你知道有没有办法解决这个问题吗?你没有添加搜索域:
find-键入f-print0 | xargs-0 ls-t
,然后您的解决方案在mac os上运行,与此处列出的其他解决方案不同抱歉,但我不明白为什么会在主目录中列出内容?标志“R”用于递归列出子目录,我在ls手册页中看不到对主目录的引用。正如我所知道的,无论你在哪里,它都会列出子目录