Debian

在您的主目錄中搜尋最近 2 分鐘內最後修改的包含特定字元串的文件

  • May 7, 2020

我正在我的主目錄中搜尋在過去兩分鐘內修改過的文件,這些文件也包含某個字元串。我試過這個命令:

find -type d -mmin -2 -ls | grep -Ril "mystring" 

它似乎可以工作,但顯然它只列印內部帶有給定字元串的那些文件,而不是 2 分鐘前最後修改的包含該字元串的文件。似乎命令的第一部分沒有執行。

您對自己的建議進行了很好的嘗試

find -type d -mmin -2 -ls | grep -Ril "mystring"

這將辨識-type d在過去兩分鐘內被修改的目錄 ( ) 而不是文件 ( -type f)。通過管道輸出-lstogrep通常會在生成的文件名中搜尋mystring. 但是,在這種情況下,該-R標誌會改變 的行為,grep它會忽略您的文件名列表,而是搜尋目前目錄及其下方的每個文件。

所以,讓我們把問題分成兩部分

  1. 在您的主目錄中搜尋最近 2 分鐘內最後修改的文件
find ~ -type f -mmin -2
  1. $$ Files $$其中包含某個字元串
grep -Fl 'certain String' {files...}

現在你需要把它們放在一起。{}是from step 1生成的文件名的佔位符,尾部find表示+可以{}重複多次,即多個文件名

   find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +

更改greptoecho grep將顯示命令正在執行的內容find;這可能是一種有用的調試技術:

   find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +

請考慮跑步man findman grep找出各種選項是什麼,例如-Fand -lin grep -Fl,否則您將無法從已設置的練習中學到任何東西;你只是在複製一個答案。

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