findでgrepステータスコードを取得する方法

findでgrepステータスコードを取得する方法

find で起動された grep コマンドの終了コードを取得するにはどうすればよいでしょうか。

例えば:

find ./export-`date +%Y%m%d`-*/instance.log -type f -exec grep -i -m1 error {} \;

ファイル内に「エラー」という単語が見つかったかどうかに関係なく、終了コードを返します。0

instance.log の内容は次のとおりです。

2016-09-30 09:01:20 : エラー2 (16)

答え1

-exec オプションを指定した find コマンドは、grep コマンドのステータス コードを返します。例:

find . -type f  -exec grep 201 {} +

パターン「201」を含むログ ファイルがあるフォルダーで実行すると、0 が返されます。コンソールで echo $? を使用して確認できます (パターンが見つかった場合は 0 が返されます)。

「201」を含まないファイルを含む別のフォルダで同じコマンドを実行すると、findコマンドのステータスコードは1になります。

関連情報