ファイルのタイムスタンプをtouchコマンドで変更する

2018-05-09

touchコマンドでタイムスタンプを変更する

ファイルのタイムスタンプを指定した時間に変更するには、「touch」コマンドを使用すると変更できます。
あまりタイムスタンプを変更する必要はないかと思いますが、特定の日数を経過したファイルを削除するスクリプトやCron等の動作確認で使う必要があるケースがありますので紹介します

指定した時刻にタイムスタンプを変更する

ファイルのタイムスタンプを指定した日時変更するには「-t」のオプションを指定します。
日付の形式は「[[CC]YY]MMDDhhmm[.ss]」の形式です。2017年10月25日10時の場合は、「201710251000」となります

# 2017年10月25日10時にタイムスタンプを指定してファイルを作製します
$ touch -t 201710251000 test.txt
# ファイルのタイムスタンプを確認します
$ ls -l test.txt
-rw-rw-r-- 1 hoge hoge 32 10月 25 10:00 test.txt

$ stat test.txt
  File: `test.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   通常の空ファイル
Device: 5810b651h/1477490257d	Inode: 15471913    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  ex-adm)   Gid: ( 1000/  ex-adm)
Access: 2017-10-25 10:00:00.000000000 +0900
Modify: 2017-10-25 10:00:00.000000000 +0900
Change: 2018-05-09 14:21:26.709457738 +0900
 Birth: -

「-t」のオプション以外に「–date」のオプションでも変更できます。この場合の日付の指定方法は、"Sun, 29 Feb 2004 16:21:42 -0800″ や “2004-02-29 16:21:42" などの日付で指定できます。
# 2004年2月29日16時21分42秒にタイムスタンプを指定してファイルを作製します
$ touch --date "2004-02-29 16:21:42" test.txt

$ stat test.txt
  File: `test.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   通常の空ファイル
Device: 5810b651h/1477490257d	Inode: 15471913    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  ex-adm)   Gid: ( 1000/  ex-adm)
Access: 2004-02-29 16:21:42.000000000 +0900
Modify: 2004-02-29 16:21:42.000000000 +0900
Change: 2018-05-09 14:25:29.980928779 +0900
 Birth: -

 
$ ls -l test.sh
-rw-rw-r-- 1 hoge hoge 88 10月 25 10:24 test.sh
$ touch -t 201710251000 test.sh
$ ls -l test.sh
-rw-rw-r-- 1 hoge hoge 88 10月 25 10:00 test.sh

他のファイルと同じタイムスタンプを変更する

他のファイルと同じタイムスタンプに設定するには「 touch -r file1 file2 」のオプションを使用します

$ ls -l | grep txt
-rw-rw-r-- 1 hoge hoge   32 10月 25 00:00 test.txt
-rw-rw-r-- 1 hoge hoge    0 10月 25 10:33 test1234.txt
# test.txt のタイムスタンプと、test1234.txtのタイムスタンプを同じにします
$ touch -r test.txt test1234.txt

$ ls -l | grep txt
-rw-rw-r-- 1 hoge hoge   32 10月 25 00:00 test.txt
-rw-rw-r-- 1 hoge hoge    0 10月 25 00:00 test1234.txt

スポンサーリンク