在grep "str" *
中
这是否意味着grep执行grep
的所有内容?
那么grep -r "str" .
比前者有更多的结果呢
答案 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