v用法 - ls grep




我如何使用grep在文件夾中查找單詞? (8)

在Windows中,我會搜索在文件夾中查找單詞。 同樣,我想知道一個特定的單詞是否出現在包含許多子目錄和文件的目錄中。 我對grep語法的搜索顯示我必須指定文件名,即grep string filename

現在,我不知道文件名,所以我該怎麼辦? 一位朋友建議做grep -nr string ,但我不知道這意味著什麼,我沒有得到任何結果(直到我發出ctrl + c時才有響應)。


  1. grep -r "yourstring" *將在任何文件和文件夾中找到“yourstring”

現在,如果您想同時查找兩個不同的字符串,則可以始終使用選項E並為搜索添加單詞。 例如休息之後

  1. grep -rE "yourstring|yourotherstring|$" *會搜索你的yourstring或其他yourotherstring匹配的列表位置

grep -nr string my_directory

附加說明:這符合語法grep [options] string filename因為在類Unix系統中,目錄是一種文件(有一個術語“常規文件”來專指在Windows中被稱為“文件”的實體)。

grep -nr string從標準輸入中讀取要搜索的內容,這就是為什麼它只是在那裡等待輸入,並在按^ C時停止這樣做(它也會停止在^ D上,這是組合鍵用於文件結束)。


不要使用grep。 下載Silver Searcherripgrep 。 它們都非常出色,比grep更快,或者擁有大量選項。


您選擇的答案很好,並且可行,但這不是正確的做法,因為:

grep -nr yourString* .

這實際上搜索字符串"yourStrin""g" 0或多次。

所以正確的做法是:

grep -nr \w*yourString\w* .

該命令用當前文件夾前後任何字符搜索字符串。


為什麼不做遞歸搜索來查找子目錄中的所有實例:

grep -r'text'*

這像一個魅力。


與@eLRuLL發布的答案類似,指定尊重單詞邊界的搜索的更簡單的方法是使用-w選項:

grep -wnr "yourString" .

grep -nr 'yourString*' .

最後的點搜索當前目錄。 每個參數的含義:

-n            Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r            Recursively search subdirectories listed
.             Directory for search (current directory)

grep -nr 'MobileAppSer*' . (可以找到MobileAppServlet.javaMobileAppServlet.classMobileAppServlet.txt ; 'MobileAppASer*.*'是另一種做同樣事情的方法。)

要檢查更多參數,請使用man grep命令。


grep -nr search_string search_dir

將執行RECURSIVE(意味著該目錄及其所有子目錄)搜索search_string。 (正如usta正確回答)。

你沒有得到你的朋友的建議:

grep -nr string

是因為沒有指定目錄。 如果您位於要進行搜索的目錄中,則必須執行以下操作:

grep -nr string .

包含'。'是很重要的。 字符,因為這告訴grep來搜索THIS目錄。