Grep
如何根據時間戳對 grep 命令中顯示的文件名進行排序?
在以下命令中,如何根據時間戳獲取文件名
$ 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 qualifiers
zsh
影響 glob 的順序。grep 'exit 0' a*(.Om)
Om
是通過m⃞修改時間來反轉o⃞rder。我還添加了 .⃞ 以僅選擇正常文件(不是目錄或管道或設備或符號連結……)。