我知道我可以ls使用该-t选项按时间对输出进行排序。
我知道当我有太多文件无法在一次ls调用中放入时,我通常可以使用xargs(或find ... -exec ... {} +) 来ls多次调用。
我怎样才能将两者结合起来?我有更多的文件超出了命令行的容量,并希望按时间排序列出它们。find . -type f -exec ls -t {} +不起作用,因为假设命令行上正好有 1000 个文件名,并且存在 3000 个文件,这将运行ls -t [first 1000 files]; ls -t [second 1000 files]; ls -t [last 1000 files],其中最后 1000 个文件find看到的地方很可能在前 1000个文件名之前有一个修改时间。它没有牛逼看起来像任何涉及xargs或同等学历无论在什么方面工作的任何机会,似乎这种做法基本上是错误的,但我不能找到一个办法做的工作。
Mic*_*mer 12
ls -t 它自己会按照该排序列出当前目录中的所有文件,根本不需要在命令行上列出它们。
如果您需要 的递归行为find,或者对文件进行一些其他测试,您可以find通过stat或通过 GNUfind的-printf选项生成带时间戳的条目并对其进行排序。就像是:
find . -type f -printf '%T@ %p\0' | sort -zn
Run Code Online (Sandbox Code Playgroud)
-printf '%T@ %p\0'生成空分隔的 Unix 时间戳 ( %T@)-文件名 ( %p) 对。sort -z也是一个非标准的 GNU 扩展,它使用空分隔的记录来保证文件名安全。sort大多数 BSD 也支持该选项,但-printf据我所知仅支持GNU。
您可以将该输出剪切回仅文件名或您喜欢的任何其他格式。