在Windows中,我会在文件夹中搜索一个单词。类似地,我想知道特定的单词是否出现在包含许多子目录和文件的目录中。我对grep语法的搜索显示我必须指定文件名,即grep字符串文件名。
现在,我不知道文件名,我该怎么做? 一个朋友建议做grep -nr字符串,但我不知道这意味着什么,我没有得到任何结果(没有响应,直到我发出Ctrl + C)。
在Windows中,我会在文件夹中搜索一个单词。类似地,我想知道特定的单词是否出现在包含许多子目录和文件的目录中。我对grep语法的搜索显示我必须指定文件名,即grep字符串文件名。
现在,我不知道文件名,我该怎么做? 一个朋友建议做grep -nr字符串,但我不知道这意味着什么,我没有得到任何结果(没有响应,直到我发出Ctrl + C)。
当前回答
为什么不做一个递归搜索来找到子目录中的所有实例:
grep -r 'text' *
这就像一个咒语。
其他回答
下面的示例递归地查找位于文件夹path1、path2和path3中的*.xml和*.js文件中的搜索字符串。
grep -r --include=*.xml --include=*.js "your search string" path1 path2 path3
因此,您可以在文件的子集中搜索许多目录,只需在最后提供路径。
grep -nr search_string search_dir
将对search_string进行递归(意味着目录及其所有子目录)搜索。(由usta正确回答)。
你朋友的建议没有得到任何答案的原因是:
grep -nr string
是因为没有指定目录。如果你在你想要搜索的目录中,你必须执行以下操作:
grep -nr string .
包含'是很重要的。'字符,因为这告诉grep搜索这个目录。
为什么不做一个递归搜索来找到子目录中的所有实例:
grep -r 'text' *
这就像一个咒语。
我喜欢使用的另一个选项:
find folder_name -type f -exec grep your_text {} \;
-type f只返回文件而不返回文件夹
-exec and{}在搜索中找到的文件上运行grep(准确的语法是“-exec command{}”)。
你选择的答案是好的,它是可行的,但它不是正确的方法,因为:
grep -nr yourString* .
这实际上是搜索字符串"yourStrin"和"g" 0或多次。
所以正确的做法是:
grep -nr \w*yourString\w* .
此命令在当前文件夹上搜索包含前后任意字符的字符串。