当前位置: 首页 > 面试题库 >

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

卫劲
2023-03-14
问题内容

想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。

我试图找到一种方法来扫描我的整个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参数排除特定目录。例如,这将排除dirs dir1 /,dir2 /及其全部与* .dst /匹配的目录:

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
    

这对我来说非常有效,可以达到与您几乎相同的目的。

有关更多选项,请检查man grep



 类似资料:
  • 如何查找在其文件内容中包含特定文本字符串的所有文件? 以下方法不起作用。它似乎显示系统中的每个文件。

  • 如何查找在其文件内容中包含特定文本字符串的所有文件? 下面不行。它似乎显示了系统中的每一个文件。

  • 问题内容: 我正在使用fileBrowser在手机上查找文件,但是我想向用户显示我的应用程序可以打开的所有文件,然后用户选择一个。就像音乐播放器一样,它不仅可以显示用户所在文件夹中的歌曲,还可以显示手机,SD卡和内存中的所有歌曲。 问题答案: 在列出文件时使用文件名过滤器。以下示例列出了给定目录中的所有mp3文件(注意-以下代码未对之下的所有文件夹进行递归处理)-

  • 我试图实现一种在Firestore中保持一致性的方法,但我需要一种找到重复数据存在的所有位置的方法。firestore中是否有方法查找其子集合包含具有特定文档ID的文档的所有文档?例如对于以下结构 我将使用什么查询来查找其“朋友”列表包含文档 ID 为 5678 的文档的所有用户 ID?例如,当用户 5678 决定更改他/她的姓名时?

  • 我试图用Selenium测试一个复杂的JavaScript接口(使用Python接口,跨多个浏览器)。我有多个表单按钮: 我希望能够搜索基于“我的按钮”(或不区分大小写,部分匹配,如“我的按钮”或“按钮”)的按钮。 我发现这是非常困难的,以至于我觉得我错过了一些明显的东西。到目前为止我所拥有的最好的东西是: 但是,这是区分大小写的。我尝试的另一件事是遍历页面上的所有div,并检查Element.T

  • 问题内容: 我有以下模型: 我正在寻找一个查询,该查询检索不属于某个特定组的所有人员(即,人员的组数组不包含指定组的ID)。 我在考虑这样的事情,但是我不确定它是正确的: 问题答案: 基本的尝试没什么错,但是这里唯一的澄清可能是普遍的误解,即您需要像 或 查询数组时这样的运算符。 另外,您真的需要在这里做一个基本的不等式匹配 : “数组”运算符不用于“数组目标”,而是用于提供条件的“列表”以方便的