为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2019-06-25 15:40:01
如何在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"

这对我来说很好,可以达到和你差不多的目的。


查看完整回答
反对 回复 2019-06-25
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

你可以用它扫描你的整个文件系统。

只要做:

ack 'text-to-find-here'

在你的根目录里。

您也可以使用正则表达式,指定文件类型等。



查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 613 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信