搜尋包含字串的檔案並列出按修改日期排序的名稱

搜尋包含字串的檔案並列出按修改日期排序的名稱

我使用此命令查找目錄中包含特定字串的所有檔案:

grep -lir "string" path_to directory

例子

grep -lir "users" /var/www/mysite

此指令顯示指定目錄中包含字串「users」的所有檔案。但是,我想按修改日期降序對它們進行排序;最新到最舊。

有什麼幫助嗎?

答案1

首先我們使用該Z選項,然後在另一端帶有 -0 選項的 xargs 將捕獲檔案名稱並統計它們,排序並刪除計時資訊以顯示排序的最新第一個列表。

 grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-

答案2

zsh

print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)

這使用全域限定符僅選擇.包含string(即表達式e_'grep -qi "string" $REPLY'_傳回的全域結果true)的常規檔案 ( ),然後透過om對最終結果進行排序mtime(最新的在前)。D如果您不想搜尋隱藏文件,請刪除。

相關內容