• ベストアンサー

リダイレクトで空ファイルを生成しない方法

以下のようにcronの実行結果にgrepをかけて、出力をファイルに書き出しているのですが、grepの結果出力がないときにサイズ0のファイルが生成されます。 cron.php | grep -v '\[ OK \]\|#!/usr/bin/php' > log/`date +%Y%m%d`cron.log 出力があるとき以外ファイルを生成させない方法はありますか? 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

無いですね。リダイレクトの出力ファイルの作成は、コマンド実行前にされます。 普通にファイルを作って、大きさゼロなら削除するしかない。 今回は、grep なのでgrepが失敗すれば(マッチがゼロ件なら)削除。 cron.php | grep -v '\[ OK \]\|#!/usr/bin/php' > log/`date +%Y%m%d`cron.log || rm log/`date +%Y%m%d`cron.log 一般の場合だと、ファイルサイズを調べて コマンド > log ; test -s log || rm log

inshin
質問者

お礼

すみません、遅くなりました。 やはりご教示の方法しかないんですね。 ありがとうございました。

関連するQ&A