grep查找文件内容 - linux在文件中查找关键字




我如何使用grep在文件夹中查找单词? (8)

  1. grep -r "yourstring" *将在任何文件和文件夹中找到“yourstring”

现在,如果您想同时查找两个不同的字符串,则始终可以使用选项E并为搜索添加单词。 例如休息之后

  1. grep -rE "yourstring|yourotherstring|$" *会搜索你的yourstring或其他yourotherstring匹配的列表位置

在Windows中,我会搜索在文件夹中查找单词。 同样,我想知道一个特定的单词是否出现在包含许多子目录和文件的目录中。 我对grep语法的搜索显示我必须指定文件名,即grep string filename

现在,我不知道文件名,所以我该怎么办? 一个朋友建议做grep -nr string ,但我不知道这意味着什么,我没有得到任何结果(直到我发出ctrl + c时才有回应)。


grep -nr string my_directory

附加说明:这符合语法grep [options] string filename因为在类Unix系统中,目录是一种文件(有一个术语“常规文件”来专指在Windows中被称为“文件”的实体)。

grep -nr string从标准输入中读取要搜索的内容,这就是为什么它只是在那里等待输入,并在按^ C时停止这样做(它也停止在^ D上,这是组合键用于文件结束)。


不要使用grep。 下载Silver Searcherripgrep 。 它们都非常出色,比grep更快,或者拥有大量选项。


与@eLRuLL发布的答案类似,指定尊重单词边界的搜索的更简单的方法是使用-w选项:

grep -wnr "yourString" .

您选择的答案很好,并且可行,但这不是正确的做法,因为:

grep -nr yourString* .

这实际上搜索字符串"yourStrin""g" 0或多次。

所以正确的做法是:

grep -nr \w*yourString\w* .

该命令用当前文件夹前后任何字符搜索字符串。


我喜欢使用的另一个选项:

find folder_name -type f -exec grep your_text  {} \;

-type f只返回文件而不是文件夹

-exec和{}在搜索中找到的文件上运行grep(确切的语法是“-exec command {}”)。


grep -nr 'yourString*' .

最后的点搜索当前目录。 每个参数的含义:

-n            Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r            Recursively search subdirectories listed
.             Directory for search (current directory)

grep -nr 'MobileAppSer*' . (可以找到MobileAppServlet.javaMobileAppServlet.classMobileAppServlet.txt ; 'MobileAppASer*.*'是另一种做同样事情的方法。)

要检查更多参数,请使用man grep命令。


grep -nr search_string search_dir

将执行RECURSIVE(意味着该目录及其所有子目录)搜索search_string。 (正如usta正确回答)。

你之所以没有得到你朋友的建议:

grep -nr string

是因为没有指定目录。 如果您位于要进行搜索的目录中,则必须执行以下操作:

grep -nr string .

包含'。'是很重要的。 字符,因为这告诉grep来搜索THIS目录。