内容来自 DOC https://q.houxu6.top/?s=在Linux中如何查找包含特定文本(字符串)的所有文件?
如何在文件内容中查找包含特定文本字符串的所有文件?
以下方法不起作用,似乎显示了系统中的每个文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
请执行以下操作:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-
-r
或-R
是递归, -
-n
是行号,并且 -
-w
表示匹配整个单词。 -
-l
(小写 L)可以添加,只给出匹配文件的文件名。 -
-e
是在搜索期间使用的模式
除了这些,还可以使用 --exclude
、--include
、--exclude-dir
标志来高效搜索:
- 这将仅搜索具有 .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/search/' -e "pattern"
这对我来说非常有效,几乎可以达到和您一样的目的。
有关更多选项,请参阅 man grep
。