grep:如何排除目錄?

grep:如何排除目錄?

當使用帶有通配符的 grep 時,如下所示

grep -in github */*

每個目錄grep顯示很多訊息,例如

grep: dir1/dir2: Is a directory

如何抑制這些訊息?

令我驚訝的是,使用該標誌--exclude-dir並不起作用。

我在 MacOS 上使用grep (BSD grep) 2.5.1-FreeBSD

答案1

-d skip將使 grep 跳過目錄:

grep -in -d 跳過 github/

根據這個 MaxOS 手冊頁該選項應該適用於 MacOS grep。如果事實證明這不適用於 MacOS grep,您可以安裝Homebrew MacOS 套件管理器然後使用 Homebrew 安裝GNU 版本的 grep,因為 GNU grep 支援-d skip(儘管在這種情況下,您必須將包含 GNU grep 的目錄設定為PATH環境變數中的第一個)。

答案2

使用find用於尋找文件和grep克/重/p在文件內:

find . -mindepth 2 -maxdepth 2 -type f -exec grep -in github {} \;

每個工具的名稱中都有關於其用途的重要線索:-)。

相關內容