touch 空のファイルを作る、またはファイルの更新日時を変更する
touch [オプション] ファイル...試してみる
ls -l existing.txt更新日時が2020年1月になっていることを確認します。
touch existing.txt既存のファイルを指定すると、内容は変えずに更新日時を現在に変えます。
ls -l existing.txt更新日時が変わったことを確認します。
touch new1.txt new2.txt存在しないファイルを指定すると、空のファイルが作られます。
touch -d "2024-04-01 12:00" new1.txt-d で、更新日時を好きな日時に設定します。
ls -l --time-style=long-iso new1.txt new2.txt2つのファイルの更新日時が違うことを確認します。
主なオプション
-a | アクセス日時だけを変更する |
|---|---|
-m | 更新日時だけを変更する |
-c | ファイルが存在しないときは作らない |
-d 日時 | 現在ではなく、指定した日時にする |
-t [[CC]YY]MMDDhhmm[.ss] | 日時を数字の形式で指定する |
-r ファイル | 指定したファイルと同じ日時にする |
解説
2つの使い道
touch は、もともとファイルの時刻を変更するコマンドです。存在しないファイルを指定したときに空のファイルが作られるため、空のファイルを手早く作る目的でもよく使われます。
ファイルが持つ3つの時刻
ファイルには、最後に読んだ時刻(アクセス時刻、atime)、内容を最後に変更した時刻(更新時刻、mtime)、属性を変更した時刻(ctime)があります。ls -l で表示されるのは更新時刻です。touch は標準で、アクセス時刻と更新時刻の両方を現在時刻にします。-a ならアクセス時刻だけ、-m なら更新時刻だけです。ctime は touch では任意の値にできません。
時刻の指定
-d は「2024-04-01 12:00」のような読みやすい書き方ができます。-t は 202404011200 のように、年月日時分を数字で並べます。-r は別のファイルの時刻に合わせたいときに使います。
find との組み合わせ
find -newer や -mtime は更新時刻で判定するので、touch で時刻を調整して動作を試すこともできます。