-1

grep "str" *
这是否意味着 grepgrep执行的所有内容?
哪个 grep -r "str" .比前一个有更多的结果

4

4 回答 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 回答