検索を使用して、内部に1つ以上のキーワードを含むファイルを検索して報告します。

検索を使用して、内部に1つ以上のキーワードを含むファイルを検索して報告します。

次の条件でファイルを報告するためにfindを使用したいと思います。

  1. ファイルに「シリアル化可能」という単語が含まれている場合
  2. ファイルに「serialVersionUID」という単語が含まれていない場合は、報告してください。

それは次のとおりです。

find . -name "*.java" -exec grep "Serializable" {} \; <magic stuff here> grep "serialVersionUID" {} \; -print

それで私はコカインをしていますが、awkは良いですか?

ご協力ありがとうございます。

ベストアンサー1

オペランド-execの計算結果findは次のとおりです。本物コマンドが成功した場合(つまり、0を返す)間違ったgrep失敗した場合(ゼロ以外の値を返す)、使用された式の一部として成功/失敗を使用できますfind

find'オペランドと一緒に!1つのgrepコマンドが成功し、もう1つのgrepコマンドが失敗したファイルを検索できます。

find . -name "*.java" \
    -exec grep -q "Serializable" {} ";" -a \
    ! -exec grep -q "serialVersionUID" {} ";" -a -print

この-qオプションは、grep何も印刷しないことを示します。戻り値にのみ興味があります。

オペランドは必ずしも必要ではありませんが、速度が遅くなり、-a式がより複雑になり、括弧が必要なときに使用するのが好きです。-o

おすすめ記事