我使用此命令查找目錄中包含特定字串的所有檔案:
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
如果您不想搜尋隱藏文件,請刪除。