如何同时递归地 grep 遍历多个目录?

如何同时递归地 grep 遍历多个目录?

我一直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" {} +

相关内容