我只想按更新日期对文件(包括子目录)进行排序。
我发现ls -lrtR | grep ^-
。但它似乎不按更新日期排序。
我需要将此列表保存到文件中。是否可以?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
我的意思是整个列表不是按日期排序的,而是先按文件夹排序,然后按日期排序。
我想要一个首先按日期排序的列表,包括所有子目录。
答案1
使用 ls,-R 将递归目录,-t 将按修改进行排序。但是,它递归地遍历目录并将 -t 应用于每个目录。它不会累积所有目录中的所有文件然后进行排序。 (据我了解,后者就是你想要的)
使用 gnu find(1),您可以指定输出格式以包括自纪元以来的秒数和文件名,然后您可以将其通过管道传递给 sort(1)。
find . -type f -printf "%T@ %f\n" | sort -n > out.txt
答案2
我不确定你到底是什么意思update dates
,但你正在使用-r
根据 man 所做的选项 -
-r 反转排序顺序以获取反向字典顺序或首先获取最旧的条目(或最后获取最大的文件,如果与按大小排序结合使用)
我认为如果您需要按时间排序的文件,这对您来说应该足够了。
ls -lRt
如果您不需要列出的所有其他内容,ls
您可以使用 -
ls -1Rt
要将结果捕获到文件中,您可以使用重定向运算符>
并指定文件名。所以你可以做这样的事情 -
ls -lRt > sortedfile.list
更新:
find . -type f -exec ls -lt {} +
这将对文件进行排序,以便首先列出最新的文件。要反转排序顺序,在末尾显示最新文件,请使用以下命令:
find . -type f -exec ls -lrt {} +