Ls

想要按更新日期對文件進行排序,包括子目錄

  • November 27, 2020

我只想按更新日期對文件進行排序,包括子目錄。

我發現了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

我的意思是整個列表不是按日期排序的,而是首先按文件夾排序,然後按日期排序。

我想要一個按日期排序的列表,包括所有子目錄。

我不確定你到底是什麼意思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 {} +

使用 ls,-R 將遞歸目錄,-t 將按修改排序。但是,它遞歸地遍歷目錄並將 -t 應用於每個目錄。它不會累積所有目錄中的所有文件然後排序。(據我了解,後者是你想要的)

使用 gnu find(1),您可以指定輸出格式以包括自紀元以來的秒數和文件名,然後您可以將其通過管道傳遞給 sort(1)。

find . -type f -printf "%T@ %f\n" | sort -n > out.txt

引用自:https://unix.stackexchange.com/questions/29355