Linux

如何通過列印最新的 10 個更新文件對查找輸出進行排序?

  • July 5, 2018

在我的 linux 機器上,我想知道使用者最近編輯了哪些文件

假設我想在/home最近編輯的最多 10 個文件下遞歸搜尋

如何使用 find 命令或其他解決方案執行此操作?

預期輸出範例:

27/6/2018 11:23 /home/my_data/file
27/6/2018 10:21 /home/top/oo/pp/file
27/6/2018 09:23 /home/my_data/GG/file

以遞歸方式列出

ls -lRrt

如果您想查找所有文件並按日期更改順序列出它們

ls -lrt `find . -type f`

可能有 10,000 種方法可以做到這一點。

查找目前目錄下最新的 10 個文件:

find -type f -printf "%TY-%Tm-%Td %TH:%TM:%TS\t%h/%f\n" | sort -r | head -n 10

可選擇添加| cut -f2以剝離時間資訊。

這使用 to-printf選項find在文件名前面列印文件的修改時間,文件名由製表符分隔,其中時間的格式可以簡單地按sort. sort -r進行反向排序以將最新(即“最大”)時間放在開頭。

對於包含換行符的文件名,這會有所下降。這可以通過結束 printf 字元串而不是\n結束\0文件名來解決。然後添加--zero-terminated到排序選項,並放在| tr '\0' '\n'最後以將空字節轉換回換行符。

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