Grep

如何根據時間戳對 grep 命令中顯示的文件名進行排序?

  • March 28, 2022

在以下命令中,如何根據時間戳獲取文件名

$ grep "exit 0" a*
a1.txt:+ exit 0
a2.txt:+ exit 0
a3.txt:+ exit 0
a4.txt:+ exit 0
a5.txt:+ exit 0

$ ls -latr 
-rw-r--r-- 1 user grp  83046 Oct 27 06:46 a5.txt
-rw-r--r-- 1 user grp  68108 Oct 27 07:59 a1.txt
-rw-r--r-- 1 user grp 159792 Oct 27 12:35 a2.txt
-rw-r--r-- 1 user grp 225703 Oct 27 16:41 a3.txt
-rw-r--r-- 1 user grp 246782 Oct 27 20:17 a4.txt

如您所見,我沒有根據創建文件的時間戳獲得輸出。有沒有辦法實現它?

如果所有文件名都不包含空格、製表符、換行符(並且$IFS沒有被修改)?、、、、字元或被呼叫*,則應該這樣做:[``-

grep -- "exit 0" $(ls -tr a*)

$()稱為命令替換。您的 shell 將首先執行ls -tr,然後 split+glob 其輸出以組成傳遞給您的grep命令的文件列表。

使用shell,您可以使用glob qualifierszsh影響 glob 的順序。

grep 'exit 0' a*(.Om)

Om是通過m⃞修改時間來反轉o⃞rder。我還添加了 .⃞ 以僅選擇正常文件(不是目錄管道設備符號連結……)。

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