根据修改时间列出文件

根据修改时间列出文件

如何运行该ls命令及其所有选项并递归列出目录中的所有文件并根据上次修改时间对其进行排序?

即 ls -lth 递归遍历目录中的所有文件

答案1

首先,您使用的是哪种 unix?基于 BSD 的系统将具有ls与 System V不同的选项集。

第二,http://unixhelp.ed.ac.uk/CGI/man-cgi?ls列出一个-R开关来强制递归列表,并-c根据ctime、或修改时间进行排序。

诀窍是验证您的 *nix 版本是否使用了ls包含这些开关的版本。

答案2

听起来你想要一个全局排序,而不是像你所获得的那样按目录排序ls -Rlth

如果文件总数不是太大,可以使用命令find来收集名称并将其传递给ls排序:

find . -type f -exec ls -lth {} +

或者

find . -type f -print0 | xargs -0 ls -lth

(在某些较旧的系统上,该find命令不支持-exec ... +-print0。在这种情况下,您可以使用-print而不是-print0并省略-0,但它不适用于包含空格或其他特殊字符的文件名。)

警告:如果要排序的文件数量很大,则可能会有太多文件无法列为单个ls命令的参数。在这种情况下,ls将多次调用,并且排序仅在每组文件内正确。

相关内容