Unixコマンド/touch

touch

機能

touchコマンドは、指定したファイルが存在しない場合は、空のファイルを作成します。
指定したファイルが存在する場合は、ファイルのアクセス時刻、修正時刻を変更します。
UNIXでは3種類のタイムスタンプがあります。⇒タイムスタンプの種類

形式

touch [オプション] ファイル名

オプション

-a         アクセス時刻のみを変更
-c         指定したファイルが存在しない場合は、ファイルを作成しない。
-m         修正時刻のみを変更
-r file    fileが持つ時刻に変更する。
-t time    指定した時刻に変更。timeは[[CC]YY]MMDDhhmm[.SS]形式で指定

タイムスタンプの種類

タイムスタンプ概要説明
atimeアクセス時間ファイルにアクセスした時間。ページャでファイルを読んだり、エディタで内容を変更した時に更新される。lsコマンドでは-luオプションで確認可能。
ctime作成時間ファイルが作成された時間ではない。エディタで内容を変更した時、アクセス権限を変更した時、所有者の変更を行った時に更新される。lsコマンドでは-lcオプションで確認可能。
mtime更新時間エディタで内容を変更した時に更新される。lsコマンドでは-lオプションで確認可能。

コマンド例

■空ファイルを作成する。

$ touch test.txt
$ ls -l test.txt 
-rw-r--r--  1 matsui  Admin  0 Mar  9 19:41 test.txt

■ファイルの更新時間のみ変更する。

$ ls -l test.txt 
-rw-r--r--  1 matsui  Admin  0 Mar  9 19:41 test.txt
$ touch -a test.txt 
$ ll
total 0
-rw-r--r--  1 matsui  Admin  0 Mar  9 19:41 test.txt
↑更新時刻は変更されていない
$ touch -m test.txt 
$ ll
total 0
-rw-r--r--  1 matsui  Admin  0 Mar  9 19:44 test.txt
↑更新時刻が19時44分に変更

■指定した時刻に更新時刻を変更する

$ ll test.txt 
-rw-r--r--  1 matsui  Admin  0 Mar  9 19:44 test.txt
$ touch -t 0101010000 test.txt 
↑2001年1月1日に変更してみる。
$ ll test.txt
-rw-r--r--  1 matsui  Admin  0 Jan  1  2001 test.txt
↑変更された。