以遞迴方式查詢給定目錄中的文字
使用 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命令的更多幫助,請參閱查詢文件,例如如何包含/排除檔案型別,目錄等