find -mtime を使う
# 最終更新から 24 時間以上経過しているか if [[ "$(find /path/to/file -mtime +0)" != "" ]]; then echo 'OLD!' else echo 'NEW!' fi
-mtime +0
がなぜ「24時間以上前」になるのか?について:
-mtime n ファイルの最終内容更新日時が、基点となる時刻から計算して n 日前に当たれば、真を返す (訳注: 基点となる時刻は、デフォルトでは find を実行している今現在である)。 (snip) なお、デフォルトの動作のように、現在時刻から数えて 24 時間前から 48 時間前までを 1 日前とする
つまり、
- 1日前 = 24時間前から48時間前
なので、
- n日前 = n*24時間前から(n+1)*24時間前
つまり、
-mtime 0 = 最終更新が0日前 = 0時間前から24時間前 -mtime 1 = 最終更新が1日前 = 24時間前から48時間前 -mtime 2 = 最終更新が2日前 = 48時間前から72時間前
次に n の記法について。
数値の引き数は、以下の形で指定することができる。 +n n より大きい。 -n n より小さい。 n ちょうど n。
なので、
-mtime +0
- =
-mtime 1
または-mtime 2
または...
- = 最終更新が0日前より過去
- = 24時間前より過去
となる。