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