Tag: grep

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

我试图找到一种方法来扫描我的整个Linux系统中包含特定字符串文本的所有文件。为了澄清,我正在寻找文件内的文本,而不是文件名。 当我正在查找如何做到这一点时,我遇到了这个解决方案两次: find / -type f -exec grep -H 'text-to-find-here' {} \; 但是,它不起作用。它似乎显示系统中的每个文件。 这是否接近正确的做法?如果不是,我该怎么办?这种在文件中查找文本字符串的功能对于我正在进行的一些编程项目来说非常有用。 答案 请执行下列操作: 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参数排除特定的目录。例如,这将排除目录dir1 /,dir2 /,并且它们全部匹配* .dst /: grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern" 这对我来说很好,可以达到和你一样的目的。 更多选项检查man grep。