在Windows中,我会搜索在文件夹中查找单词.同样,我想知道在包含许多子目录和文件的目录中是否出现特定单词.我对grep语法的搜索显示我必须指定文件名,即grep string filename.
现在,我不知道文件名,所以我该怎么办?朋友建议做grep -nr string,但我不知道这意味着什么,我没有得到任何结果(直到我发出一个没有回应ctrl + c).
Man*_*jan 773
grep -nr 'yourString*' .
Run Code Online (Sandbox Code Playgroud)
最后的点搜索当前目录.每个参数的含义:
-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)
Run Code Online (Sandbox Code Playgroud)
grep -nr 'MobileAppSer*' . (会发现MobileAppServlet.java或MobileAppServlet.class或MobileAppServlet.txt; 'MobileAppASer*.*'另一种方式做同样的事情.)
要检查更多参数,请使用man grep命令.
ust*_*sta 110
grep -nr string my_directory
附加说明:这满足了语法,grep [options] string filename因为在类Unix系统中,目录是一种文件(有一个术语"常规文件",专门指代在Windows中被称为"文件"的实体).
grep -nr string 从标准输入中读取要搜索的内容,这就是为什么它只是等待你的输入,并在你按^ C时停止这样做(它也会在^ D上停止,这是结束的关键组合-文件).
Ste*_*ger 59
GREP:全球正则表达式打印/分析器/处理器/程序.
您可以使用它来搜索当前目录.
您可以为"递归"指定-R,这意味着程序将搜索所有子文件夹及其子文件夹及其子文件夹的子文件夹等.
grep -R "your word" .
Run Code Online (Sandbox Code Playgroud)
-n将打印在文件中匹配的行号.
-i将搜索不区分大小写(大写/非大写字母).
grep -inR "your regex pattern" .
Run Code Online (Sandbox Code Playgroud)
Nic*_*men 24
grep -nr search_string search_dir
Run Code Online (Sandbox Code Playgroud)
将执行RECURSIVE(意味着目录及其所有子目录)搜索search_string.(正如usta正确回答的那样).
你没有得到朋友的建议的原因:
grep -nr string
Run Code Online (Sandbox Code Playgroud)
是因为没有指定目录.如果您位于要进行搜索的目录中,则必须执行以下操作:
grep -nr string .
Run Code Online (Sandbox Code Playgroud)
包含'.'很重要.字符,因为这告诉grep搜索这个目录.
mu *_*ort 24
还有:
find directory_name -type f -print0 | xargs -0 grep -li word
Run Code Online (Sandbox Code Playgroud)
但这对初学者来说可能有点多了.
find是一个通用目录walker/lister,-type f意思是"查找普通文件而不是目录和命名管道以及你有什么",-print0意思是"使用空字符作为分隔符在标准输出上打印它们".将输出find发送到xargs -0并以块的形式获取其标准输入(以避免命令行长度限制),使用空字符作为记录分隔符(而不是标准换行符)并应用于grep -li word每组文件.在grep,-l表示"列出匹配的文件",-i表示"不区分大小写"; 你通常可以组合单个字符选项,这样你就会-li经常看到-l -i.
如果你不使用-print0,并-0然后你会碰到与包含空格,以便使用它们是一个好习惯文件名的问题.
Mik*_*inn 10
与 @eLRuLL 发布的答案类似,指定尊重单词边界的搜索的更简单方法是使用以下-w选项:
grep -wnr "yourString" .
Run Code Online (Sandbox Code Playgroud)
我喜欢使用的另一个选项:
find folder_name -type f -exec grep your_text {} \;
Run Code Online (Sandbox Code Playgroud)
-type f 只返回文件而不返回文件夹
-exec 和 {} 对搜索中找到的文件运行 grep(确切的语法是“-exec command {}”)。
小智 5
grep -r "yourstring" *
将在任何文件和文件夹中找到“您的字符串” 现在,如果您想同时查找两个不同的字符串,则可以始终使用选项E并为搜索添加单词。休息后的例子
grep -rE "yourstring|yourotherstring|$" *将搜索列表位置yourstring或yourotherstring匹配的位置