如何在Linux上找到包含特定文本的所有文件?我试图找到一种方法来扫描整个Linux系统中包含特定文本字符串的所有文件。为了澄清,我正在寻找文件中的文本,而不是文件名中的文本。当我想知道怎么做的时候,我发现这个解决方案有两次:find / -type f -exec grep -H 'text-to-find-here' {} \;但是,它不起作用。它似乎显示了系统中的每个文件。这离正确的方法很近吗?如果没有,我该怎么做?这种在文件中查找文本字符串的功能对于我正在做的一些编程项目非常有用。
3 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
做以下工作:
grep -rnw '/path/to/somewhere/' -e 'pattern'
或-r
是递归的,-R
是行号,并且-n
代表匹配整个单词。-w
(小写L)可以添加到只给出匹配文件的文件名。-l
连同这些,--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
参数。例如,这将排除dir 1/,dir 2/,并且它们都匹配*.dst/:grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
这对我来说很好,可以达到和你差不多的目的。
- 3 回答
- 0 关注
- 613 浏览
添加回答
举报
0/150
提交
取消