使用 grep 命令查找包含指定文本的所有文件

发表信息: by Creative Commons Licence

$ grep -rnw '/path/to/somewhere/' -e 'pattern'

-r-R 表示递归查找。 -n 展示行号。 -w 完全匹配(匹配整个单词)。 -l (小写 L)只显示文件名,而不是结果本身。 i 忽略大小写(可选)。

和标签 –exclude–include–exclude-dir 一起使用可以更有效的查找:1

只搜索扩展名为 .c 或 .h 的文件:

$ grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"

排除所有扩展名为 .o 的文件:

$ grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"

通过 –exclude-dir 参数可以排除指定的目录。 例如,下面的命令将排除目录 dir1/、dir2/ 和所有 *.dst/ 目录。

$ grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"

也可以从根目录开始查找:

$ grep -Ril "text-to-find-here" /

这些命令能够出色的完成任务,同样能够帮你完成类似的搜索。 更多选项可以查看 man 命令手册 man grep