weblog of key_amb

主にIT関連の技術メモ

Linuxにおけるファイルのタイムスタンプ (atime/ctime/mtime)

Linuxのファイルには3つのタイムスタンプがある。

  • atime ... 最終アクセス日時
  • mtime ... 最終変更日時
  • ctime ... 最終ステータス変更日時

タイムスタンプの表示

ls -lu # atimeの表示
ls -l  # mtimeの表示
ls -lc # ctimeの表示

または、statコマンドでも表示できる。

$ stat hoge.txt 
  File: `hoge.txt'
  Size: 79              Blocks: 8          IO Block: 4096   通常ファイル
Device: ca01h/51713d    Inode: 139937      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/   user)   Gid: ( 1001/   user)
Access: 2014-12-04 07:20:06.979956045 +0900  # atime
Modify: 2014-12-04 07:20:06.979956045 +0900  # mtime
Change: 2014-12-05 00:17:48.490973560 +0900  # ctime
 Birth: -

タイムスタンプを変更するには

atime/mtime は touch コマンドで変更できる。

## mtimeのみ変更
$ touch -m -d "2012/9/23 00:00:00" hoge.txt
$ ls -l hoge.txt
-rw-r--r-- 1 user group 5  9月 23 00:00 hoge.txt
## atimeのみ変更
$ touch -a -d "2012/9/24 00:00:00" hoge.txt
$ ls -lu hoge.txt
-rw-r--r-- 1 user group 5  9月 24 00:00 hoge.txt
## atime,mtimeを変更
$ touch -d "2012/9/25 00:00:00" hoge.txt
$ ls -l hoge.txt
-rw-r--r-- 1 user group 5  9月 25 00:00 hoge.txt
$ ls -lu hoge.txt
-rw-r--r-- 1 user group 5  9月 25 00:00 hoge.txt

ctimeには任意の時刻を設定することはできない。

find コマンド

findコマンドでは、atime, ctime, mtimeそれぞれでファイルを検索することができる。
例えば、以下のようにする

# ディレクトリ /path が対象とする
# 7日前以前にアクセスされたファイルを探す
find /path -atime +7
# 3日以内に変更されたファイルを探す
find /path -ctime -3