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 skipgrep スキップディレクトリを作成します。

grep -in -d github スキップ/

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

答え2

find使用探すgrep次にファイルのマージグラム/重量/pファイル内で:

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

各ツールの名前には、その目的に関する重要な手がかりがあります:-).

関連情報