如何运行该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
将多次调用,并且排序仅在每组文件内正确。