以递归方式查找给定目录中的文本
使用 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
命令的更多帮助,请参阅查找文档,例如如何包含/排除文件类型,目录等