在Windows中,我会在文件夹中搜索一个单词。类似地,我想知道特定的单词是否出现在包含许多子目录和文件的目录中。我对grep语法的搜索显示我必须指定文件名,即grep字符串文件名。

现在,我不知道文件名,我该怎么做? 一个朋友建议做grep -nr字符串,但我不知道这意味着什么,我没有得到任何结果(没有响应,直到我发出Ctrl + C)。


当前回答

你选择的答案是好的,它是可行的,但它不是正确的方法,因为:

grep -nr yourString* .

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

所以正确的做法是:

grep -nr \w*yourString\w* .

此命令在当前文件夹上搜索包含前后任意字符的字符串。

其他回答

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

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

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

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

为什么不做一个递归搜索来找到子目录中的所有实例:

grep -r 'text' *

这就像一个咒语。

不要使用grep。下载Silver Searcher或ripgrep。它们都很出色,并且比grep或ack快得多,有大量的选项。

grep -R "string" /directory/

当-R不跟随符号链接时,-R也跟随符号链接。

你选择的答案是好的,它是可行的,但它不是正确的方法,因为:

grep -nr yourString* .

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

所以正确的做法是:

grep -nr \w*yourString\w* .

此命令在当前文件夹上搜索包含前后任意字符的字符串。