Bash 速習チュートリアル

Bash touchコマンド

1. touchコマンドの使用方法

touchコマンドは、ファイルのタイムスタンプを変更するため、あるいはファイルが存在しない場合に空のファイルを新規作成するために使用されます。
ビルドシステムにおけるタイムスタンプの更新や、プレースホルダーとしてのファイル作成によく利用されます。

1.1 基本的な使い方

ファイルのアクセス時刻と修正時刻の両方を現在の時刻に更新するには、touch ファイル名 の形式で使用します。

例:

touch file.txt

2. オプション

touchコマンドには、動作をカスタマイズするための様々なオプションが用意されています。

  • -a - ファイルが最後に読み取られた時刻(アクセス時刻)のみを更新する
  • -m - ファイルが最後に変更された時刻(修正時刻)のみを更新する
  • -t - タイムスタンプを特定の日時に設定する
  • -c - ファイルが存在しない場合、新規作成を行わない

2.1 -a オプション:アクセス時刻の変更

-aオプションを使用すると、ファイルのアクセス時刻(Access Time)のみを更新できます。

例:アクセス時刻の変更

touch -a file.txt

2.2 -m オプション:修正時刻の変更

-mオプションを使用すると、ファイルの修正時刻(Modification Time)のみを更新できます。

例:修正時刻の変更

# 現在の状態を確認
ls -l
-rw-r--r-- 1 user 197609 208 Apr  9 06:24 my_file.txt

# 修正時刻のみを更新
touch -m my_file.txt

# 更新後の状態を確認
ls -l
-rw-r--r-- 1 user 197609 208 Apr  9 08:25 my_file.txt

2.3 -t オプション:特定のタイムスタンプを設定

-tオプションを使用すると、タイムスタンプを任意の日時に設定することが可能です。

例:特定のタイムスタンプを設定

# 現在の状態を確認
ls -l
-rw-r--r-- 1 user 197609 208 Apr  9 06:24 my_file.txt

# 2025年1月1日 00時00分に設定
touch -t 202501010000 my_file.txt

# 更新後の状態を確認
ls -l
-rw-r--r-- 1 user 197609 208 Jan  1 00:00 my_file.txt

2.4 -c オプション:ファイルを新規作成しない

-cオプションは、指定したファイルが存在しない場合に、新しいファイルを作成しないようtouchに指示します。
これは、新しいファイルが誤って生成されるのを防ぎつつ、既存のファイルのタイムスタンプだけを更新したい場合に非常に便利です。

例:ファイルを新規作成しない

touch -c non_existent_file.txt
# (ファイルが存在しない場合、何も実行されません)

3. ワイルドカードを使用した一括更新

ワイルドカードを活用することで、複数のファイルのタイムスタンプを一度に更新できます。
例えば、touch *.txt を実行すると、現在のディレクトリ内にあるすべてのテキストファイルのタイムスタンプが更新されます。

例:ワイルドカードの使用

touch *.txt