Engineering

Ubuntu touchコマンドの使い方

  • 作成日:2024年2月17日22:00
  • 更新日:2024年2月23日15:52

Linux

Ubuntu

Ubuntuのtouchコマンドは新規にファイルを作成するときに用いられることが多いですが、本来はファイルのtimestampを操作するためのものです。

存在しないファイル名が指定された場合、そのファイル名の空のファイルが作成されます。

man touch
...
NAME
       touch - change file timestamps
...

コマンド引数は以下のものがあります。

引数 効果
-a アクセス時刻を変更する
-cまたは--no-create ファイル作成をしない
-d <STRING>または--date=<STRING> <STRING>部分をパースして現在時刻の代わりに使用する
-f 無視される(BSDバージョンのtouchとの互換性のため)
-hまたは--no-dereference シンボリックリンクのみに作用する(参照されているファイルには作用しない )
-m 修正時刻を変更する
-r=<FILE>または--reference=<FILE> 指定されたファイルの時間を現在時刻の代わりに使用する
-t <STAMP> <STAMP>で指定された時刻([[CC]YY]MMDDhhmm[.ss]を現在時刻の代わりに使用する)
--time=<WORD> <WORD>で指定された要素を変更する(指定可能な要素は「access, atime, use(この3つは-aオプションと同じ効果), modify, mtime(この2つは-mオプションと同じ効果)」)
--help ヘルプを表示
--version バージョン情報を表示



-dで指定できる<STRING>と-tで指定できる<STAMP>はフォーマットが異なるため注意が必要です。

以下、順次出力例を示します。


実行例:オプションなし
# ファイルが存在しない状態
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:04:30 UTC 2024
# オプションなしで存在しないファイルを指定して実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch demo-01.txt
# 新たなファイルが作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:04 demo-01.txt
# Access/Modify/Change/Birthが現在時刻で作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:04:36.845665921 +0000
Modify: 2024-02-20 15:04:36.845665921 +0000
Change: 2024-02-20 15:04:36.845665921 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:05:08 UTC 2024
# ファイルが存在した状態で再度実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch demo-01.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
# Access/Modify/Changeの時刻が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:05:11.778024861 +0000
Modify: 2024-02-20 15:05:11.778024861 +0000
Change: 2024-02-20 15:05:11.778024861 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000

実行例:-a
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:05:11.778024861 +0000
Modify: 2024-02-20 15:05:11.778024861 +0000
Change: 2024-02-20 15:05:11.778024861 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:16:04 UTC 2024
# -aオプションをつけて実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -a demo-01.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
# Access/Changeの時刻が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:16:12.556798191 +0000
Modify: 2024-02-20 15:05:11.778024861 +0000
Change: 2024-02-20 15:16:12.556798191 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000

実行例:-c / --no-create
# demo-01.txtファイルが存在している
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 18 15:23 demo-01.txt
# -cまたは--no-createオプションを使用せず指定されたファイルが存在しない場合、空のファイルが作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 18 15:23 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 18 15:41 demo-02.txt
# -cオプションをつけると存在しないファイルが指定されてもファイルは作成されない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -c demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 18 15:23 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 18 15:41 demo-02.txt
# --no-createオプションも同様
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --no-create demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 18 15:23 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 18 15:41 demo-02.txt

実行例:-d <STRING>または--date=<STRING>

<STRING>ではある程度柔軟な形式で指定可能です。詳しくはgnu.orgのドキュメントをご参照ください。

demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:20:18 UTC 2024
# --dateオプションで日時を指定して新しく空のファイルを作成する
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --date="2010-01-01 12:34:56.123456789" demo-03.txt
# 新しくファイルが作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
# Access/Modifyの時刻が指定した時刻になっている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-03.txt
  File: demo-03.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258192      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:21:08.144097825 +0000
 Birth: 2024-02-20 15:21:08.144097825 +0000
# -dオプションの場合は「=」は不要
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -d "2010-01-01 12:34:56.123456789" demo-04.txt
# 新しくファイルが作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-04.txt
# Access/Modifyの時刻が指定した時刻になっている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-04.txt
  File: demo-04.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258195      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:21:58.056632800 +0000
 Birth: 2024-02-20 15:21:58.056632800 +0000

実行例:-f

「無視される」というのはつけてもつけなくても同じ結果になるということのようです。BSDとの互換性のために用意されているオプションのようなので、Ubuntuでのユースケースでは特につける必要はないと思います。

# 下記の4つのファイルがある状態
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-04.txt
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:32:16 UTC 2024
# 存在しないファイルを指定するとファイルが作成される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:32 demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:32:21.422921155 +0000
Modify: 2024-02-20 15:32:21.422921155 +0000
Change: 2024-02-20 15:32:21.422921155 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:34:19 UTC 2024
# 存在するファイルを指定すると日付が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -f demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:34 demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:34:25.640336173 +0000
Modify: 2024-02-20 15:34:25.640336173 +0000
Change: 2024-02-20 15:34:25.640336173 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000

実行例:-h / --no-dereference
# 以下の5つのファイルがある状態
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
-rw-rw-r-- 1 demo demo 0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo 0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo 0 Feb 20 15:34 demo-05.txt
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:37:04 UTC 2024
# シンボリックリンクを作成
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ln -s demo-01.txt demo-01-link
demo@demo-01-Ubuntu22:~/ubuntu-commands$
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:37 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01-link
  File: demo-01-link -> demo-01.txt
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 811h/2065d      Inode: 258198      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:37:23.918279301 +0000
Modify: 2024-02-20 15:37:18.874224277 +0000
Change: 2024-02-20 15:37:18.874224277 +0000
 Birth: 2024-02-20 15:37:18.874224277 +0000
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:38:29 UTC 2024
# -hオプションで実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -h demo-01-link
# シンボリックリンクの時刻が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:38 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# リンク元のファイルは変わらない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:16:12.556798191 +0000
Modify: 2024-02-20 15:05:11.778024861 +0000
Change: 2024-02-20 15:16:12.556798191 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000
# シンボリックリンクのAccess/Modify/Change時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01-link
  File: demo-01-link -> demo-01.txt
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 811h/2065d      Inode: 258198      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:38:40.231078782 +0000
Modify: 2024-02-20 15:38:36.947044062 +0000
Change: 2024-02-20 15:38:36.947044062 +0000
 Birth: 2024-02-20 15:37:18.874224277 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:39:23 UTC 2024
# --no-dereferenceオプションで実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --no-dereference demo-01-link
# シンボリックリンクの時刻が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:05 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# リンク元のファイルは変わらない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:16:12.556798191 +0000
Modify: 2024-02-20 15:05:11.778024861 +0000
Change: 2024-02-20 15:16:12.556798191 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000
# シンボリックリンクのAccess/Modify/Change時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01-link
  File: demo-01-link -> demo-01.txt
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 811h/2065d      Inode: 258198      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:39:31.843588469 +0000
Modify: 2024-02-20 15:39:28.491555634 +0000
Change: 2024-02-20 15:39:28.491555634 +0000
 Birth: 2024-02-20 15:37:18.874224277 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:40:06 UTC 2024
# オプションなしで実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch demo-01-link
# シンボリックリンクではなくリンク元ファイルの時刻が更新される
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# リンク元のファイルのAccess/Modify/Change時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01.txt
  File: demo-01.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258189      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:40:12.784012605 +0000
Modify: 2024-02-20 15:40:12.784012605 +0000
Change: 2024-02-20 15:40:12.784012605 +0000
 Birth: 2024-02-20 15:04:36.845665921 +0000
# シンボリックリンクは変わらない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-01-link
  File: demo-01-link -> demo-01.txt
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 811h/2065d      Inode: 258198      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:39:31.843588469 +0000
Modify: 2024-02-20 15:39:28.491555634 +0000
Change: 2024-02-20 15:39:28.491555634 +0000
 Birth: 2024-02-20 15:37:18.874224277 +0000

実行例:-m
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:19 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:19:41.459168751 +0000
Change: 2024-02-20 15:19:41.459168751 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 15:51:42 UTC 2024
# -mオプションで実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -m demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# Modify/Change時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:51:51.815141656 +0000
Change: 2024-02-20 15:51:51.815141656 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000

実行例:-r=<FILE>または--reference=<FILE>
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# ファイルdemo-02.txtの情報を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:51:51.815141656 +0000
Change: 2024-02-20 15:51:51.815141656 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000
# ファイルdemo-03.txtの情報を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-03.txt
  File: demo-03.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258192      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:21:08.144097825 +0000
 Birth: 2024-02-20 15:21:08.144097825 +0000
# -rオプションでファイル名を指定して実行(=は不要、スペースを挟んで参照ファイル名を指定)
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -r demo-02.txt demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# ファイルdemo-02.txtは変わらない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:51:51.815141656 +0000
Change: 2024-02-20 15:51:51.815141656 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000
# ファイルdemo-03.txtのAccess/Modifyがdemo-02.txtと同じ値になっている※Changeは現在日時
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-03.txt
  File: demo-03.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258192      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:51:51.815141656 +0000
Change: 2024-02-20 15:57:25.870580399 +0000
 Birth: 2024-02-20 15:21:08.144097825 +0000
# ファイルdemo-04.txtの情報を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-04.txt
  File: demo-04.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258195      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:21:58.056632800 +0000
 Birth: 2024-02-20 15:21:58.056632800 +0000
# --referenceオプションでファイル名を指定して実行(=を用いて参照ファイルを指定)
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --reference=demo-04.txt demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# ファイルdemo-03.txtのAccess/Modifyがdemo-04.txtと同じ値になっている※Changeは現在日時
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-03.txt
  File: demo-03.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258192      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:58:28.595205300 +0000
 Birth: 2024-02-20 15:21:08.144097825 +0000
# ファイルdemo-04.txtは変わらない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-04.txt
  File: demo-04.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258195      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2010-01-01 12:34:56.123456789 +0000
Modify: 2010-01-01 12:34:56.123456789 +0000
Change: 2024-02-20 15:21:58.056632800 +0000
 Birth: 2024-02-20 15:21:58.056632800 +0000

実行例:-t <STAMP>
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Tue Feb 20 16:18:17 UTC 2024
# ファイルdemo-02.txtの情報を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:19:41.459168751 +0000
Modify: 2024-02-20 15:51:51.815141656 +0000
Change: 2024-02-20 15:51:51.815141656 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000
# -tオプションで日時を指定して実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch -t 202004011234.56 demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Apr  1  2020 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# Access/Modifyの時刻が指定した日時になっている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-02.txt
  File: demo-02.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258191      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2020-04-01 12:34:56.000000000 +0000
Modify: 2020-04-01 12:34:56.000000000 +0000
Change: 2024-02-20 16:18:50.351819926 +0000
 Birth: 2024-02-20 15:19:41.459168751 +0000

実行例:--time=<WORD>
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ls -l
total 0
lrwxrwxrwx 1 demo demo 11 Feb 20 15:39 demo-01-link -> demo-01.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:40 demo-01.txt
-rw-rw-r-- 1 demo demo  0 Apr  1  2020 demo-02.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:51 demo-03.txt
-rw-rw-r-- 1 demo demo  0 Jan  1  2010 demo-04.txt
-rw-rw-r-- 1 demo demo  0 Feb 20 15:34 demo-05.txt
# ファイルdemo-05.txtの情報を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-20 15:34:25.640336173 +0000
Modify: 2024-02-20 15:34:25.640336173 +0000
Change: 2024-02-20 15:34:25.640336173 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Fri Feb 23 05:23:32 UTC 2024
# time=accessとしてtouchコマンドを実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --time=access demo-05.txt
# Access/Changeの時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-23 05:24:06.367647249 +0000
Modify: 2024-02-20 15:34:25.640336173 +0000
Change: 2024-02-23 05:24:06.367647249 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Fri Feb 23 05:25:08 UTC 2024
# time=atimeとしてtouchコマンドを実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --time=atime demo-05.txt
# 同様にAccess/Changeの時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-23 05:25:22.503094787 +0000
Modify: 2024-02-20 15:34:25.640336173 +0000
Change: 2024-02-23 05:25:22.503094787 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Fri Feb 23 05:26:11 UTC 2024
# time=useとしてtouchコマンドを実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --time=use demo-05.txt
# 同様にAccess/Changeの時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-23 05:26:21.390665986 +0000
Modify: 2024-02-20 15:34:25.640336173 +0000
Change: 2024-02-23 05:26:21.390665986 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Fri Feb 23 05:27:33 UTC 2024
# time=modifyとしてtouchコマンドを実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --time=modify demo-05.txt
# Modify/Changeの時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-23 05:26:21.390665986 +0000
Modify: 2024-02-23 05:27:43.198068639 +0000
Change: 2024-02-23 05:27:43.198068639 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000
# 再度現在日時を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ date
Fri Feb 23 05:28:38 UTC 2024
# time=mtimeとしてtouchコマンドを実行
demo@demo-01-Ubuntu22:~/ubuntu-commands$ touch --time=mtime demo-05.txt
# 同様にModify/Changeの時刻が更新されている
demo@demo-01-Ubuntu22:~/ubuntu-commands$ stat demo-05.txt
  File: demo-05.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d      Inode: 258196      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    demo)   Gid: ( 1000/    demo)
Access: 2024-02-23 05:26:21.390665986 +0000
Modify: 2024-02-23 05:28:47.457598198 +0000
Change: 2024-02-23 05:28:47.457598198 +0000
 Birth: 2024-02-20 15:32:21.422921155 +0000

実行例:--help

demo@demo-01-Ubuntu22:~$ touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h
is supplied.

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
      --time=WORD        change the specified time:
                           WORD is access, atime, or use: equivalent to -a
                           WORD is modify or mtime: equivalent to -m
      --help     display this help and exit
      --version  output version information and exit

Note that the -d and -t options accept different time-date formats.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/touch>
or available locally via: info '(coreutils) touch invocation'

実行例:--version

demo@demo-01-Ubuntu22:~$ touch --version
touch (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, Arnold Robbins, Jim Kingdon,
David MacKenzie, and Randy Smith.




参考文献:
- man touchコマンド
- https://www.gnu.org/software/coreutils/manual/html_node/touch-invocation.html#touch-invocation