Grep with-r
对我来说不起作用。
然后我做了一个测试情况。目录/home/den/backup
现在包含一个包含单词的文件washer
。我还在 内创建了一个子目录/home/den/backup
。在该目录中,一个文件包含单词washer
。以下内容应返回 /home/den/backup/great.txt
和处的两个匹配项/home/den/backup/aaa/info.txt
如果我发出
grep -r "washer" /home/den/backup/*.*
结果是一击命中。
如果我发出
grep -r "washer" /home/den/backup/aaa/*.*
结果是一击命中。
第一个难道不应该找到第二个吗?第二个位于它的子目录中。
答案1
你可以通过将 shell 设置为调试模式来查看这里发生的情况set -x
$ set -x
$ grep -r "washer" /home/steeldriver/backup/*.*
+ grep --color=auto -r washer /home/steeldriver/backup/great.txt
washer
即,shell 正在扩展*.*
并匹配单个文件great.txt
- 因此grep
搜索该单个文件。
如果你想递归搜索整个目录,只需将目录作为参数:
$ grep -r "washer" /home/steeldriver/backup/
+ grep --color=auto -r washer /home/steeldriver/backup/
/home/steeldriver/backup/aaa/info.txt:washer
/home/steeldriver/backup/great.txt:washer
(您可以使用再次关闭调试模式set +x
)