2 find . -name "*.java" -exec grep "foo" {} \; これは、ファイル名ではなく、一致するものだけを出力します。 find . -name "*.java" -exec grep "foo" /dev/null {} \; しかし、これはファイル名も出力します。 どうして?/ dev / nullがミックスに挿入されたときにファイル名が印刷されるfind / grepの仕組みは何ですか? PS-はい、「grep -H」を実行できることを知っています unix find grep — ジョナサン ソース
6 -hオプションも-Hオプションも使用しない場合、複数のファイルが引数として指定されると、grepはファイル名を書き出します。したがって、grepの引数として/ dev / nullを追加すると、常に複数のファイルが作成されるため、ファイル名が常に書き込まれます。しかし、ええ、˛を使用することgrep -Hは、常にファイル名を書き込む最も安全な方法です。 — ペテルソーン ソース
1 grep複数のファイルを検索する場合、一致した行の前にファイル名を出力して、行が見つかった場所を区別すると推測します。それ以外の場合、ファイルが1つだけ指定されていれば、ユーザーは行がどのファイルにあるかをすでに知っています。 使用するgrep -h出力にファイル名をオフにし、grep -Hそれらを強制します。 — アンフェタマシン ソース