知っておくとちょっと便利!ファイルの作成や情報の変更を行う touch コマンド

今号では、touch コマンドの使い方やオプションについてご紹介します!

touch コマンドとは

touch コマンドは、ファイルのタイムスタンプを変更するコマンドです。
ファイルのタイムスタンプとは、ファイルへのアクセス日時や更新日時の事を言います。

存在しないファイル名を指定した場合は、空のファイル (テキストファイル) を作成します。

基本の書式

“touch ” コマンドを実行すると、ファイルのタイムスタンプを現在時刻へと更新します。
ここで言うタイムスタンプとは、ファイルのアクセス時刻と更新時刻の両方になります。

例として、text1 というファイルのタイムスタンプを変更してみます。
まずは text1 のタイムスタンプを変更する前の情報を、あらかじめ確認しておきます。

$ stat text1
  File: `text1'
  Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
Device: fd00h/64768d    Inode: 18171963    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-09-13 14:01:15.245551301 +0900
Modify: 2022-09-13 14:01:15.245551301 +0900
Change: 2022-09-13 14:01:15.245551301 +0900
 Birth: -

次に touch コマンドで text1 のタイムスタンプを変更し、再度タイムスタンプを確認します。

$ touch text1
$ stat text1
  File: `text1'
  Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
Device: fd00h/64768d    Inode: 18171962    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-09-13 14:26:49.305260877 +0900
Modify: 2022-09-13 14:26:49.305260877 +0900
Change: 2022-09-13 14:26:49.305260877 +0900

タイムスタンプ (Access、Modify、Change) が更新されている事が確認できました。

touch コマンドのオプション

次に、touch コマンドで使用可能なオプション (一部抜粋) をご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。

  • 最終アクセス日時 (atime) を変更する
    -a オプションを指定すると、最終アクセス日時 (atime) を変更します。
    また、この時同時に ctime (ファイルの内容、もしくは属性を変更した時間) も変更されます。
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 14:26:49.305260877 +0900
    Modify: 2022-09-13 14:26:49.305260877 +0900
    Change: 2022-09-13 14:26:49.305260877 +0900
    $ touch -a text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 14:27:33.257137083 +0900
    Modify: 2022-09-13 14:26:49.305260877 +0900
    Change: 2022-09-13 14:27:33.257137083 +0900
    
  • 編集日時 (mtime) を変更する
    -m オプションを指定すると、ファイルの編集日時 (mtime) を変更します。
    また、この時同時に ctime (ファイルの内容、もしくは属性を変更した時間) も変更されます。
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:34:27.863856572 +0900
    Modify: 2022-09-13 09:34:27.863856572 +0900
    Change: 2022-09-13 09:34:27.863856572 +0900
    $ touch -m text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:34:27.863856572 +0900
    Modify: 2022-09-13 09:35:55.954219462 +0900
    Change: 2022-09-13 09:35:55.954219462 +0900
    
  • 存在しないファイル名を指定した場合に、空のファイルを作成しない
    -c オプションを指定すると、指定したファイルが存在しない場合に空のファイルの作成しません。
    誤ってファイルを作成したくない場合などにこのオプションを指定すると便利です。
    $ touch newfile
    $ ls newfile
    # -c オプションがない場合はファイルが作成される
    newfile
    $ touch -c newfile2
    $ ls newfile2
    -c オプションがある場合はファイルが作成されない
    ls: newfile2 にアクセスできません: そのようなファイルやディレクトリはありません
    
  • タイムスタンプの日時を指定する
    -d オプションを指定すると、タイムスタンプの日時を指定できます。
    なお、この時 ctime (ファイルの内容、もしくは属性を変更した時間) は現在日時に変更されるため、指定の日時は反映されません。
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:36:28.051004881 +0900
    Modify: 2022-09-13 09:36:28.051004881 +0900
    Change: 2022-09-13 09:36:28.051004881 +0900
    $ touch -d "2022-9-1 9:00" text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-01 09:00:00.000000000 +0900
    Modify: 2022-09-01 09:00:00.000000000 +0900
    Change: 2022-09-13 09:37:01.300177846 +0900
    
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。

コメントを残す

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