grep: ディレクトリを除外するには?

grep: ディレクトリを除外するには?

grepをワイルドカード付きで使用する場合、

grep -in github */*

各ディレクトリにはgrep次のような多くのメッセージが表示されます

grep: dir1/dir2: Is a directory

これらのメッセージを抑制するにはどうすればよいでしょうか?

--exclude-dir驚いたことに、フラグを使用しても機能しません。

grep (BSD grep) 2.5.1-FreeBSDMacOSで使用しています。

答え1

-d skipgrep はディレクトリをスキップします:

grep -in -d githubをスキップ/

によるとこのMaxOSのマニュアルページこのオプションはMacOSのgrepでは機能するはずです。MacOSのgrepでこれが機能しない場合は、インストールして自作MacOSパッケージマネージャーそしてHomebrewを使ってインストールしますGNU 版 grepGNU grep がサポートしているためです-d skip(ただし、その場合は、GNU grep を含むディレクトリをPATH環境変数の最初にする必要があります)。

答え2

findに使用探すファイルgrepg/re/pファイル内:

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

各ツールの名前には、その目的を示す大きなヒントが含まれています :-)。

関連情報