我只想按更新日期(包括子目录)对文件进行排序。
我发现了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
Run Code Online (Sandbox Code Playgroud)
我的意思是整个列表不是按日期排序,而是首先按文件夹排序,然后按日期排序。
我想要一个首先按日期排序的列表,包括所有子目录。
Rol*_*der 22
使用 ls,-R 将递归目录,-t 将按修改排序。但是,它递归地遍历目录并将 -t 应用于每个目录。它不会累积所有目录中的所有文件然后进行排序。(据我所知,后者是你想要的)
使用 gnu find(1),您可以指定输出格式以包括自纪元以来的秒数和文件名,然后您可以将其通过管道传递给 sort(1)。
find . -type f -printf "%T@ %f\n" | sort -n > out.txt
Run Code Online (Sandbox Code Playgroud)
jay*_*ngh 18
我不确定你到底是什么意思update dates
,但你正在使用-r
根据 man 所做的选项 -
-r 反转排序顺序以获得反向字典顺序或最旧的条目(或最大的文件最后,如果与按大小排序相结合)
如果您需要按时间排序的文件,我认为这对您来说应该足够了。
ls -lRt
如果您不需要列出的所有其他东西,ls
那么您可以使用 -
ls -1Rt
要在文件中捕获结果,您可以使用重定向运算符>
并提供文件名。所以你可以做这样的事情 -
ls -lRt > sortedfile.list
find . -type f -exec ls -lt {} +
Run Code Online (Sandbox Code Playgroud)
这将对文件进行排序,以便首先列出最新的文件。要反转排序顺序,在最后显示最新的文件,请使用以下命令:
find . -type f -exec ls -lrt {} +
Run Code Online (Sandbox Code Playgroud)