grep“str”有什么区别。和grep“str”*

时间:2013-04-17 07:06:00

标签: linux command-line grep

grep "str" *中 这是否意味着grep执行grep的所有内容? 那么grep -r "str" .比前者有更多的结果呢

4 个答案:

答案 0 :(得分:1)

运行grep str *时,shell将展开*以匹配当前目录中的所有文件名,除非它们以点开头,然后将该文件列表传递给{{ 1}}命令。

当您运行grep时,shell无法自行扩展。但是,grep -r str .命令通过遍历其参数列表并以递归方式递减来响应grep选项。

所以,至少有三个不同之处:

  • -r会找到隐藏文件
  • grep -r将通过子目录
  • grep -r也适用于包含大量文件的目录。在这种情况下,您可能会收到一条错误消息,指出命令行对grep -r来说太长了。

答案 1 :(得分:0)

grep

将搜索模式,最后一个参数是要搜索的文件,因此:

grep str *

将搜索当前目录中的所有文件(与*作为通配符匹配)以查找模式“str”。

grep -r str .

将以当前目录(单点为当前目录,两个点为前一个目录)以递归方式(因此在内部目录等内)搜索模式str。

答案 2 :(得分: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

答案 3 :(得分:0)

bash总是扩大*? [...] ..如果你没有设置noglob

当你使用“。” ,grep将从当前目录中搜索,但是当你使用其中一个时 在符号上方,bash扩展您的命令,然后调用grep