猿问

如何在Linux上找到包含特定文本的所有文件?

如何在Linux上找到包含特定文本的所有文件?

我试图找到一种方法来扫描整个Linux系统中包含特定文本字符串的所有文件。为了澄清,我正在寻找文件中的文本,而不是文件名中的文本。

当我想知道怎么做的时候,我发现这个解决方案有两次:

find / -type f -exec grep -H 'text-to-find-here' {} \;

但是,它不起作用。它似乎显示了系统中的每个文件。

这离正确的方法很近吗?如果没有,我该怎么做?这种在文件中查找文本字符串的功能对于我正在做的一些编程项目非常有用。


忽然笑
浏览 614回答 3
3回答

慕的地8271018

做以下工作: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"这对我来说很好,可以达到和你差不多的目的。

蝴蝶刀刀

你可以用它扫描你的整个文件系统。只要做:ack 'text-to-find-here'在你的根目录里。您也可以使用正则表达式,指定文件类型等。
随时随地看视频慕课网APP
我要回答