
次の条件でファイルを報告するためにfindを使用したいと思います。
- ファイルに「シリアル化可能」という単語が含まれている場合
- ファイルに「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