touch コマンドは、ファイルのタイムスタンプ(最終アクセス時刻および最終修正時刻)を変更するためのユーティリティです。Version 7 AT&T UNIX に登場し、ファイルの作成や、既存ファイルのタイムスタンプを更新するのに広く利用されています。

基本的な使い方

編集
touch [オプション] ファイル...

主なオプション

編集
主なオプション
オプション 説明
-a 最終アクセス時刻のみ変更
-m 最終修正時刻のみ変更
-t TIME 指定した日時にタイムスタンプを変更(例:touch -t 202502031230.00 file.txt
-c, --no-create ファイルが存在しない場合に新規作成しない
-r FILE 他のファイルのタイムスタンプをコピー
-d, --date=STRING 指定した文字列の日付・時刻でタイムスタンプを変更

新規ファイルの作成

編集
touch newfile.txt

newfile.txt が存在しない場合、新しい空のファイルが作成され、存在する場合はタイムスタンプが現在の日時に更新されます。

ファイルの最終アクセス時刻を変更

編集
touch -a file.txt

file.txt の最終アクセス時刻を現在の日時に更新します。

ファイルの最終修正時刻を変更

編集
touch -m file.txt

file.txt の最終修正時刻を現在の日時に更新します。

指定した日時でタイムスタンプを変更

編集
touch -t 202502031230.00 file.txt

file.txt のタイムスタンプを指定した日時(2025年2月3日12時30分)に変更します。

他のファイルのタイムスタンプをコピー

編集
touch -r reference.txt target.txt

reference.txt のタイムスタンプを target.txt にコピーします。

FreeBSD 版との違い

編集

FreeBSD でも touch コマンドは提供されていますが、いくつか違いがあります。

主な違い:

編集
  1. FreeBSD 版の touch コマンドでは、タイムスタンプが空のファイルに対しても更新される点はGNU版と同様ですが、-c オプションに関しては、ファイルが存在しない場合にエラーを出力することがあります。
  2. GNU 版の touch では、新規ファイルを作成する際にデフォルトでファイルのアクセスと修正時刻が同時に更新されますが、FreeBSD 版では-a-m オプションを指定しないと、その挙動に若干の違いが見られる場合があります。

詳しくは、それぞれの環境で man touch を確認してください。