揮発性のメモ2

知識をメモ書きしておく

findで日付指定

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時ちょうどを対象に出来る
  • デメリット
    • 仮ファイルの作成が必要
    • ダサすぎる