Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

touch

ファイルの最終アクセス日時と最終更新日時を変更する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
touch [-a] [-m] [-c] [-r REF_FILE] [-t TIME] FILE...

 touchコマンドは、FILE...に指定したファイルが保持している日時に関する情報を変更します。修正できる日時情報は、最終アクセス日時(最後にファイルを操作した日時)と最終更新日時(最後にファイルを更新した日時)です。指定したファイルが存在しない場合には、サイズが0のファイル(内容がないファイル)を作成します。

オプション
① -a
最終アクセス時刻を変更します。
② -m
最終更新日時を変更します。
③ -c
指定したファイルが存在しない場合に、ファイルを作成しません。
④ -r REF_FILE
「REF_FILE」で指定したファイルが保持している日時情報に変更します。
⑤ -t TIME

「TIME」で指定した日時に変更します。「TIME」は次の形式で指定します。

 [[CC]YY]MMDDhhmm[.SS] [/dd]

 この時、それぞれの文字が表す内容は以下のとおりとなります。

日時の指定方法
文字内容例(2004年3月3日午後5時0分0秒)
CC西暦年の上2桁20
YY西暦年の下2桁04
MM月の2桁表記03
DD日の2桁表記03
hh24時間制の時の2桁表記17
mm分の2桁表記00
SS秒の2桁表記00

 このオプションを省略すると、システム日時に変更します。

引数
① FILE...
ファイルをスペースで区切って指定します。ワイルドカードによる指定も可能です。
最終アクセス日時と最終更新日時を変更する
[takeda]$ ls -l 
合計0
[takeda]$ touch f001 f002
[takeda]$ ls -l
合計0
-rw-rw-r-- 1 cmd cmd 0 4月14 23:33 f001
-rw-rw-r-- 1 cmd cmd 0 4月14 23:33 f002
存在しないファイルを指定すると、サイズが0のファイルを作成
[takeda]$ touch -a f001
ファイル「f001」の最終アクセス日時を変更
[takeda]$ touch -m f002
ファイル「f002」の最終更新日時を変更
[takeda]$ ls -lu
合計0
-rw-rw-r-- 1 cmd cmd 0 4月14 23:38 f001
-rw-rw-r-- 1 cmd cmd 0 4月14 23:33 f002
[takeda]$ ls -l
合計0
-rw-rw-r-- 1 cmd cmd 0 4月14 23:33 f001
-rw-rw-r-- 1 cmd cmd 0 4月14 23:39 f002
[takeda]$
存在しないファイルを指定した場合に、ファイルを作成しない
[takeda]$ ls 
f001 f002
[takeda]$ touch -c f003
オプション「-c」を指定すると、存在しないファイルを作成しない
[takeda]$ ls
f001 f002
[takeda]$
HINT!

 lsコマンド

touchコマンドはどんな時に使うのか?

 会社内の教育でコマンドを教える時、「touchコマンドはどんな時に使うのですか?」という質問を受ける時があります。単に日付を変えるだけ、それもなぜ変える必要があるのかわからない、というのです。いろいろな場面で使用できると思いますが、筆者はいろいろなサービスを定義するために必要となる空ファイル(中身のないファイル)の作成や、日付が新しくないと動作しないコマンド(プログラム作成時に使いますが詳細は別の機会に)で多用します。このように一見何に使うのかわからないコマンドもありますが、そのコマンドの作成者は必要にせまられて作っているのでしょうし、長いUNIXの歴史の中で今なお残っていることでも利用されているということがわかると思います。本書はビギナーの方を対象としていますからすべてのコマンドは解説していませんが、本書でひと通りのコマンドを使えるようになりましたら是非ほかのコマンドにもチヤレンジしてみて下さい。

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5