在grep "str" *
这是否意味着 grepgrep
执行的所有内容?
哪个 grep -r "str" .
比前一个有更多的结果
问问题
784 次
4 回答
1
当您运行grep str *
时,shell 将扩展*
以匹配当前目录中的所有文件名,除非它们以点开头,然后将该文件列表传递给grep
命令。
当你运行grep -r str .
时,shell 没有什么可以扩展的。grep
然而,该命令-r
通过遍历其参数列表并递归地下降到所有目录来对该选项做出反应。
因此,至少存在三个不同点:
grep -r
会找到隐藏文件grep -r
将通过子目录grep -r
也适用于包含大量文件的目录。在这种情况下,您可能会收到一条错误消息,指出命令行变得太长grep str *
。
于 2013-04-17T07:12:33.660 回答
0
grep
将搜索一个模式,最后一个参数是要搜索的文件,所以:
grep str *
将在当前目录(与 * 作为通配符匹配)中搜索模式“str”的所有文件。
grep -r str .
将递归地搜索(所以在目录内等)从当前目录开始的模式 str (单点是当前目录,两个点是前一个目录)。
于 2013-04-17T07:09:38.817 回答
0
grep "str" * # search a string str in all files in current directly but not sub directories
grep -r "str" . # search a string str recursively in cireent directory and in all sub directories in all file whose file name has a single character
于 2013-04-17T07:10:36.700 回答
0
bash 总是扩展 * ?[...] .. 如果你没有设置 noglob
当你使用“。” , grep 将从当前目录搜索,但是当您使用上述符号之一时,bash 会扩展您的命令,然后调用 grep
于 2013-05-01T13:58:18.377 回答