パイプを通してgrep -vで探す

パイプを通してgrep -vで探す

特定の文字列を含まない特定の種類のすべてのファイルを見つけようとします。 grep -vにfindを接続してこの問題を解決しようとしています。

例:

find -type f -name '*.java' | xargs grep -v "something something"

これはうまくいかないようです。 findコマンドで見つかったすべてのファイルを返すようです。私が望むのは、基本的に特定のファイル名と一致し(たとえば、SessionPb.javaで「Pb」で終わる)、内部に「extends SomethingSomething」を持たないすべての.javaファイルを見つけることです。

私が何か間違っていると思います。それでは、命令はどのようなものでなければなりませんか?

ベストアンサー1

ここには必要ありませんxargs。また、grepwithオプション(一致しないファイル)も使用する必要があります-L。それ以外の場合は、例のように名前の代わりにファイルの内容が出力されます。

find . -type f -iname "*.java" -exec grep -L "something somethin" {} \+

おすすめ記事