UNIXの部屋 コマンド: touch


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド touch ファイルのタイムスタンプを変更、ファイルを新規作成する

touch コマンドは、ファイルのタイムスタンプを変更する、空のファイルを新規作成する、という 2つの機能を持つコマンドである。

ファイルの新規作成
ファイルを新規に作成する場合は、
% touch sample.txt
とする。これでサイズが 0 のファイル sample.txt が作られる。

タイムスタンプの変更
ファイルのタイムスタンプを任意の時刻に合わせたい場合は、-t オプションを使う。デフォルトでは最終更新時刻 (mtime) と最終アクセス時刻 (atime) の両方を変更する。

新しめの touch コマンドであれば、-d オプションを使って、
% touch -d "2017-12-05T20:51:13.123" sample
% touch -d "2017-12-05T20:51:13.123" sample
と ISO 8601 形式で指定できる (新しめの touch で使えるはずというのは、POSIX.1-2008 で touch コマンドに -d オプションが規定されたため)。

さらに、GNU coreutils の touch コマンドであれば、
% touch --date="2017-12-05T20:51:13.123" sample
→ -d ではなく --date オプション
% touch -d "2017-12-05 20:51:13.123" sample
→ T なし
% touch -d "2017/12/05 20:51:13.123" sample
→ ハイフンではなくスラッシュ
などと、比較的ゆるく受け入れてくれるであろう。

従来からの touch コマンドであれば、少々わかりづらくはあるが、-t オプションを使う。タイムスタンプを 1月2日3時4分にしたいなら、
% touch -t 01020304 sample
とする (年は変えない場合)。また、2017年12月5日20時51分にしたいなら、
% touch -t 201712052051 sample
とする。秒数まで設定する場合は`.'を付けて
% touch -t 201712052051.15 sample
とすればよい。

オプション
-c 指定したファイルが存在しなかったら新しくファイルを作らない
-f ファイルのパーミッションを無視してタイムスタンプを変更する。
-r [ファイル名]
コマンドラインからタイムスタンプを指定せず、指定したファイルのタイムスタンプをコピーする。
% touch -r from.txt to.txt
→ from.txt のタイムスタンプを、to.txt にコピーする。
% touch -a -r from.txt to.txt
→ 最終アクセス時刻のみをコピー。
% touch -m -r from.txt to.txt
→ 最終更新時刻のみをコピー。
-a 最終アクセス時刻のみを変更する。
-m 最終更新時刻のみを変更する。
最終アクセス時刻や最終更新時刻などのタイムスタンプについての解説は以下の項を参照。

ファイルの最終更新時刻、最終アクセス時刻、最終ステータス変更時刻を表示したい場合は、ls -l を使う。

指定したサイズのファイルを生成したい場合は、mkfile や dd を使う。
>> OSオンラインマニュアル(man) Solaris10 touch(1)
>> OSオンラインマニュアル(man) FreeBSD touch(1)
>> OSオンラインマニュアル(man) Linux touch(1)


頑張って書いたおすすめコンテンツ!