findで日付指定して検索する際、 ▲日前ではなく、★月▼日を指定したい
2014-09-25 00:00:00 から 2014-09-25 23:59:59 までのファイルを検索
★月▼日が何日前かを計算して指定する
STARTTIME=$(( (`date +%s`-`date --date='2014-09-25' +%s`)/86400 +1 )) ENDTIME=$(( (`date +%s`-`date --date='2014-09-26' +%s`)/86400 -1 )) find ./ -daystart -mtime -$STARTTIME -and -mtime +$ENDTIME
- メリット
- 古いバージョンのfindでも動作する
- デメリット
- 日付の計算で目を疑う
newermtオプションを使用する
findコマンドで日付指定を使っての期間絞込み - cakephperの日記(CakePHP, Laravel, PHP)
find ./ -newermt '2014-09-25' -and ! -newermt '2014-09-26'
- メリット
- 比較的直感的でわかりやすい
- デメリット
- 古いfindにはnewerXYオプションが無い
- 開始日の0時ちょうどのファイルは対象外になり、終了日の0時ちょうどのファイルが対象になってしまう
仮ファイルを二つ指定する
touch start.txt -m -d "2014-09-24 23:59:59.9999" touch end.txt -m -d "2014-09-25 23:59:59.9999" find ./ -newer start.txt -and ! -newer end.txt
- メリット
- 開始日の0時ちょうどを対象に出来る
- デメリット
- 仮ファイルの作成が必要
- ダサすぎる