Linuxコマンド「touch」

touchコマンドとは

touchコマンドはタイプスタンプを更新するためのコマンドである。更新するファイルが見つからない場合は新規に作成するため、空ファイルを作成するときにも使われる。

基本的な構文

touchコマンドの構文は以下の通りである。

touch [オプション] タイムスタンプを更新するファイル [タイムスタンプを更新するファイル2 ...]

オプションを何も指定しなかった場合、ファイルの最終更新日時、最終変更日時、最終アクセス日時が現在時刻に更新される。

stat oldfile
  File: oldfile
  Size: 400             Blocks: 8          IO Block: 4096   regular file
Device: 8,48    Inode: 45908       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2025-02-24 10:17:05.058183875 +0900
Modify: 2024-08-23 23:20:46.000000000 +0900  # 古いファイルをコピーしたためBirthよりModifyの方が過去になっている
Change: 2025-02-24 10:38:45.024806410 +0900
 Birth: 2025-02-24 10:38:27.015828614 +0900
touch oldfile
stat oldfile
  File: oldfile
  Size: 400             Blocks: 8          IO Block: 4096   regular file
Device: 8,48    Inode: 45908       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2025-02-24 10:40:33.214707127 +0900
Modify: 2025-02-24 10:40:33.214707127 +0900
Change: 2025-02-24 10:40:33.214707127 +0900
 Birth: 2025-02-24 10:38:27.015828614 +0900

オプションでどのタイムスタンプを変えるか、いつに変えるかを指定できる。

タイムスタンプの指定

変更するタイプスタンプオプション備考
アクセス日時-a仕様上、変更日時も変わる。
更新日時-m仕様上、変更日時も変わる。
ワード指定--time=WORDaccess, atime, use: アクセス日時
mtime: 更新日時

日時の指定

オプション意味
-d time
--date=time
指定の日時にタイムスタンプを更新する。
「2025-02-24 10:56:37」のようなものだけでなく「yesterday」や「1 year ago」のような相対的な指定も受け付ける。
詳細はData input formats参照。
-t [[cc]yy]mmddhhmm[.ss]指定の日時にタイムスタンプを更新する。
-r file
--reference=file
指定したファイルのタイムスタンプで更新する。
-dの相対的な指定と併用して、指定したファイルの1日前のような指定ができる。

その他のオプション

オプション意味
-c
--no-create
ファイルが見つからないときに作成をせず、警告も出さない。
-h
--no-dereference
シンボリックリンクが指定された場合に、参照するターゲットではなくシンボリックリンク自体のタイムスタンプを更新する。

参考:空ファイルの作成

空ファイルを作成する方法としても使われるtouchコマンドだが、ほかにも空ファイルを作る方法はいくつかある。

方法コマンド例備考
リダイレクト(追記)>> ファイル名・ファイルがなければ空に、ファイルがあればそのままになる
リダイレクト(上書)> ファイル名・ファイルがあろうとなかろうと、空ファイルになる。
echo+リダイレクトecho -n > ファイル名
echo -n >> ファイル名
・上のリダイレクトのみだとエラーになる環境向け
・-nを付けることで改行が出力されないようにしている
・2つの違いはリダイレクトと同じ
truncatetruncate -s 0 ファイル名・ファイルがあろうとなかろうと、空ファイルになる。
・-cオプションをつけると、ファイルがあるときは空に、ファイルがないときは何もしないという動作になる。
・truncateはファイルのサイズを指定の長さに伸縮するコマンドで、デフォルトではファイルが無いときに作成する挙動である。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です