4.4. タイムスタンプの変更 【touch】

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

ファイルの時刻情報(タイムスタンプ)には、最終更新時刻、最終アクセス時刻、ステータス変更時刻の 3つが存在します。単に ls -l コマンドを実行したときに表示される時刻は、最終更新時刻です。最終アクセス時刻はファイルへ最後にアクセスした時刻、ステータス変更時刻は、chmod や chown コマンドでファイルの属性を変更した場合に更新される時刻です。

ファイルの最終更新時刻、最終アクセス時刻を変更するには、touch コマンドを使用します。なお、touch コマンドは現在時刻以外の時刻に変更することも可能です。

注意

最終更新時刻、最終アクセス時刻を変更する場合、touch コマンドを実行するユーザーは、そのファイルの所有者である必要はありませんが、ファイルへの書き込み権限がなければなりません。現在時刻以外に変更する場合は、ファイルの所有者でなければなりません。

注意

システム関連のファイルは、時刻情報が重要となる場合もありますので touch の実行には注意が必要です。

オプションを指定せずコマンドを実行した場合は、最終更新時刻、最終アクセス時刻が現在時刻に更新されます。

ティップ

ファイルが存在しない場合は、新規ファイルが作成されます。

$ touch sample.txt

代表的なオプションを以下に示します。

表 4-4. touch コマンドのオプション

-a最終アクセス時刻のみ変更します。
-m最終更新時刻のみ変更します。
-t [[CC]YY]MMDDhhmm[.ss]指定した時刻に最終更新時刻、最終アクセス時刻を変更します。CC(西暦上2桁)、YY(西暦下2桁)、MM(月)、DD(日)、hh(時)、mm(分)、ss(秒)の書式で指定します。
-d timetime で指定した時刻にタイムスタンプを変更します。time の指定には一般的なフォーマットが使用できます。("Tue Apr 24 12:59:15 JST 2001"、"2001/4/24 12:59:15")

例えば、sample.txt の最終更新時刻を 2001年1月1日 の 00:00:00 に変更するには、次のコマンドを実行します。

$ touch -d "2001/1/1 00:00:00" sample.txt