如何查找在其文件内容中包含特定文本字符串的所有文件?
以下方法不起作用。它似乎显示系统中的每个文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
您可以使用ack。它就像源代码的grep。您可以使用它扫描整个文件系统。
只要做到:
ack 'text-to-find-here'
在您的根目录中。
还可以使用正则表达式,指定文件类型等。
更新
我刚刚发现了Silver Searcher,它类似ack,但比它快3-5倍,甚至忽略来自a 的模式。gitignore
文件。
使用grep-ilR
:
grep -Ril "text-to-find-here" /
i
代表忽略大小写(在您的案例中是可选的)。R
代表递归。l
代表“显示文件名,而不是结果本身”。/
代表从机器的根部开始。请执行以下操作:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
或 -R
是递归的,-n
是行号,并且-w
代表匹配整个单词。可以添加 -l
(小写 L)以仅提供匹配文件的文件名。-e
是搜索期间使用的模式与这些一起,--exclude
,--include
,--exclude-dir
标志可用于高效搜索:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
这对我来说非常有效,可以实现几乎与你相同的目的。
有关更多选项,请参见< code>man grep。
如何查找在其文件内容中包含特定文本字符串的所有文件? 下面不行。它似乎显示了系统中的每一个文件。
问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我试图找到一种方法来扫描我的整个Linux系统,以查找包含特定文本字符串的所有文件。只是为了澄清,我正在文件中寻找文本,而不是在文件名中寻找文本。 当我查找如何执行此操作时,我两次遇到此解决方案: 但是,它不起作用。似乎显示了系统中的每个文件。 这接近正确的方法吗?如果没
问题内容: 我一直在寻找一个命令,该命令将从当前目录返回文件名中包含字符串的文件。我已经看到和命令可以找到以某些内容开头或结尾的文件。 如何返回文件名中包含字符串的文件列表? 例如,if 是当前目录中的文件。 如何返回此文件和其他包含字符串的文件?使用诸如 问题答案: 用途: 它将在当前目录中找到所有包含“字符串”的文件(如果要递归,则删除),并将其打印在屏幕上。 如果要避免文件包含“:”,则可以
问题内容: 要查找当前文件夹中所有包含“ foo”的文件,我使用: 要查找当前文件夹中所有包含“ bar”的文件,我使用: 但是,如何查找不包含“ foo”和“ bar”的所有文件? 问题答案: 要打印 线 不包含某些字符串,可以使用标志: 这样就为您提供了 不 包含或的所有行。 要打印不包含某些字符串的 文件 ,请使用该标志。要不匹配多个字符串,可以将正则表达式与标志一起使用(可以使用多个reg
问题内容: 我在Ubuntu上,我想在当前目录和子目录中找到名称包含字符串“ John”的所有文件。我知道可以匹配文件中的内容,但是我不知道如何在文件名中使用它。任何帮助,将不胜感激。 问题答案: 使用find命令,
我必须在数据库中找到所有有模式的记录。如果字段中的任何单词以特定字符串结尾。比如“is”: 所以像%is%或%is这样的简单操作是无效的。有没有什么正则表达式可以帮我做这件事?我也可以在PHP中使用LIKE%is%和filtring获得所有记录,但仍然没有任何线索如何。我有结束字符串的解决方案,但没有单词。