Grep

如何一次遞歸地遍歷多個目錄?

  • February 3, 2015

我一直使用grep -r在給定目錄中的文件中查找字元串的出現:

$ grep -r "字元串" 應用程序/資產/javascripts
> app/assets/javascripts/my_file.js:這一行包含我的**字元串**

但是,如果我想遞歸搜尋目前目錄的**多個子目錄怎麼辦?**我能想到的唯一方法是執行 grep 兩次:

$ grep -r "字元串" 應用程序/資產/javascripts
> app/assets/javascripts/my_file.js:這一行包含“**字元串**”
$ grep -r "字元串" 規範/javascripts
> app/assets/javascripts/my_file.js:“**字元串**”也出現在這裡。

如何將上述兩個grep命令組合成一行?我不想搜尋 中的每個文件.,而且--exclude-dir不實用,因為下面有太多其他目錄.,我無法明確排除它們。

這可能嗎?

您可以在中指定多個目錄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" {} +

引用自:https://unix.stackexchange.com/questions/182654