Fileのタイムスタンプを比較する
システムの現在の時間は、date コマンドで取得できる。Localeによって表示のされ方は異なると思われるが、自分の環境では「曜日・月・日・時刻・タイムゾーン・西暦」というような順番で表示される。
$ $ date Sat Apr 13 11:28:39 JST 2013 $
そして、ファイルのタイムスタンプは stat -x $FILE で取得できる。
$ cd /tmp $ touch TEST $ stat -x TEST File: "TEST" Size: 0 FileType: Regular File ... Access: Sat Apr 13 11:31:31 2013 Modify: Sat Apr 13 11:31:31 2013 Change: Sat Apr 13 11:31:31 2013 $
ModifyとChangeの違いがよくわからないが。とりあえず、Changeと現在の日時を比較し、本日に更新されたものかどうかを判定させてみた。
$ if [ `stat -x TEST | grep Change | awk '{print $2 $3 $4}'` = `date | awk '{print $1 $2 $3}'` ];then echo "OK";fi OK $
西暦は比較していないが、そもそもこれをやろうとしたのは毎日一度だけログイン時に何かしたい、というときに、すでにその何かを本日実行したかどうかを判定するための案で考えたこと。西暦は比較していないが、ここでelseのブロックにその「何か」を書いておけば、必然的にそうなる。とりあえずはこれで問題なさそうだ。