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

0 投票
最新提问 1月 14, 2017 用户: Mercedes (470 分)

我需要扫描整个Linux系统的全部文件,找出所有包含一个特定文本字符串的文件。需要说明的是,我只想在文件中查找文本,而不是在文件名中。

我尝试了下面的命令

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

但是,它没有返回预期的结果。

这种方法正确吗?如果不对,我该怎么办?我正在做的编程项目需要这种在文件中查找文本字符串的功能。

1个回答

0 投票
最新回答 1月 14, 2017 用户: 青山 (640 分)

执行以下操作:

grep -rnw '/path/to/somewhere/' -e "pattern"
  • -r或者-R是递归的,
  • -n 是行号,和
  • -w 站立匹配整个词。
  • -l (小写L)可以被添加以仅给出匹配文件的文件名。

除了这些,--exclude,--include,--exclude-dir或--include-dir参数可用于提高搜索的效率:

  • 这将只搜索具有.c或.h扩展名的文件:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
  • 这将排除搜索以.o扩展名结尾的所有文件:

grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
  • 排除文件,它可以排除通过/ include目录--exclude-dir和--include-dir参数。例如,这将排除目录dir1、dir2、*.dst:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"

这个命令基本能够实现你的目的,更多选项请参考man grep。

欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...