以遞迴方式查詢給定目錄中的文字
使用 GNU grep
grep -r 'pattern' <directory path>
要列出匹配的行號,請使用 -n
選項
grep -rn 'pattern' <directory path>
僅搜尋具有特定 glob 模式的檔案
grep --include='*.txt' -r 'pattern' <directory path>
排除檔案模式或目錄
grep -R --exclude=*.log 'pattern' <directory path>
grep -R --exclude={*.log,*.class} 'pattern' <directory path>
grep -R --exclude-dir=tmp 'pattern' <directory path>
grep -R --exclude-dir={tmp,lib} 'pattern' <directory path>
備註和其他有用的選項
- 如果在當前目錄中搜尋,則可以跳過
<directory path>
-R
選項遵循所有符號連結,不像-r
只有在命令列上時才跟隨符號連結-l
只列出匹配的檔案-h
抑制檔名字首--color=auto
突出匹配的模式-m <num>
指定每個檔案輸入的最大匹配數
POSIX 解決方法以遞迴方式搜尋
find <directory path> -type f -exec grep -l 'pattern' {} +
- 可以根據需要使用
-n
,-l
等選項 - 如果不支援
{} +
,請改用{} \;
- 有關
find
命令的更多幫助,請參閱查詢文件,例如如何包含/排除檔案型別,目錄等