dateコマンドで前日を取得

日付をファイル名に含んだログファイルをバッチ処理する際に前日の計算が必要になります。最初は前日の計算でネット検索していましたが、今日の日付から閏年まで考慮して自前で計算するスクリプトばかり出てきたので、なんとかもっとスマートな方法は無いかとdateコマンドの仕様を探って見つけた方法を紹介。

Linuxの場合
date –date ‘1 day ago’

FreeBSDの場合
date -v -1d

で前日を取得できます。
これをログファイルのフォーマットに合わせてシェルスクリプトに定義すると、

Linuxの場合
date=`date –date ‘1 day ago’ +%Y-%m-%d`
logfile=access_log.$date

FreeBSDの場合
date=`date -v -1d +%Y-%m-%d`
logfile=access_log.$date

で解決します。