![如何同时递归地 grep 遍历多个目录?](https://linux22.com/image/47281/%E5%A6%82%E4%BD%95%E5%90%8C%E6%97%B6%E9%80%92%E5%BD%92%E5%9C%B0%20grep%20%E9%81%8D%E5%8E%86%E5%A4%9A%E4%B8%AA%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我一直grep -r
在给定目录的文件中查找字符串的出现次数:
$ grep -r“字符串”应用程序/资产/javascripts > app/assets/javascripts/my_file.js:这一行包含我的细绳
但是如果我想递归地搜索怎么办多个子目录我当前的目录?我能想到的唯一方法是运行 grep 两次:
$ grep -r“字符串”应用程序/资产/javascripts > app/assets/javascripts/my_file.js:此行包含“细绳” $ grep -r“字符串”规范/javascripts > 应用程序/资产/javascripts/my_file.js:“细绳”也出现在这里。
如何将上述两个grep
命令合并到一行中?我不想搜索 中的每个文件.
,并且--exclude-dir
不切实际,因为下面有太多其他目录,.
我无法显式排除它们。
这可能吗?
答案1
您可以在以下位置指定多个目录grep
:
grep -r "string" app/assets/javascripts spec/javascripts
或者 - 有时更有用的是列出要 grep by 的文件find
,然后 grep 它们,例如
find app/assets/javascripts spec/javascripts -type f -print0 |
xargs -0 grep "string"
或者
find app/assets/javascripts spec/javascripts -type f -exec grep -H "string" {} +