ファイルが持っている日付情報は、3つあります。
最初にファイルを作成すると全て同じ日付になっています。
$ touch test.txt $ stat test.txt File: `test.txt' Access: 2012-04-01 16:16:20.549952288 +0900 Modify: 2012-04-01 16:16:20.549952288 +0900 Change: 2012-04-01 16:16:20.549952288 +0900 $
最終アクセス日付
Accessは、ファイルに最後にアクセス(読み込み)した日付です。
catコマンドなどでファイルを読み込むと日付が変わります。
$ cat test.txt $ stat test.txt File: `test.txt' Access: 2012-04-01 16:19:35.665952289 +0900 Modify: 2012-04-01 16:16:20.549952288 +0900 Change: 2012-04-01 16:16:20.549952288 +0900 $
最終更新日付
Modifyは、ファイルを変更した日付です。
エディタやリダイレクトでファイルを更新すると変更されます。
ファイルを更新するとChangeも更新されます。
$ echo date >> test.txt $ stat test.txt File: `test.txt' Access: 2012-04-01 16:19:35.665952289 +0900 Modify: 2012-04-01 16:22:43.069952289 +0900 Change: 2012-04-01 16:22:43.069952289 +0900 $
最終変更日付
Changeは、ファイルの属性や内容が変更された日付です。
ファイルの属性が変更された時には、Changeだけが更新されます。
$ chmod -w test.txt $ stat test.txt File: `test.txt' Access: 2012-04-01 16:19:35.665952289 +0900 Modify: 2012-04-01 16:22:43.069952289 +0900 Change: 2012-04-01 16:23:53.497952286 +0900 $
lsコマンドで確認
lsコマンドでは、-lオプションでModify、-luオプションでAccessが確認できます。
Changeは、lsコマンドでは確認できません。たぶん…
$ stat test.txt File: `test.txt' Size: 5 Blocks: 8 IO Block: 4096 通常ファイル Access: 2012-04-01 16:19:35.665952289 +0900 Modify: 2012-04-01 16:22:43.069952289 +0900 Change: 2012-04-01 16:23:53.497952286 +0900 $ ls -l 合計 4 -r--r--r-- 1 guest guest 5 2012-04-01 16:22 test.txt $ ls -lu 合計 4 -r--r--r-- 1 guest guest 5 2012-04-01 16:19 test.txt $
findコマンドの日付
いつも忘れてしまうので…
mtime
findコマンドの-mtimeオプションでn日より以前に更新されたファイル、n日以内に更新されたファイルを探せます。
このオプションは、-mtime +nと指定すると24時間☓nよりModifyが前のファイルを探し、-mtime -nで24時間☓nより後の更新日付を探します。
なので、24時間以内に更新されたファイルは、条件にかからないケースがあります。
$ date 2012年 4月 1日 日曜日 16:45:39 JST $ ls -l 合計 4 -r--r--r-- 1 guest guest 5 2012-03-30 00:00 test.txt -rw-rw-r-- 1 guest guest 0 2012-03-31 00:00 test2.txt $ find . -mtime +1 ./test.txt $ . $
mmin
findコマンドの-mminオプションは、-mtimeオプションを分単位に実行してくれるコマンドです。
下記のように41時間より前に更新されたファイルと41時間以内に更新されたファイルを分で指定できます。
$ find . -mmin +2460 ./test.txt $ find . -mmin -2460 . ./test2.txt $