Linux touchコマンド入門
空ファイルの作成とタイムスタンプ更新
touchコマンドで空ファイルの作成やタイムスタンプの更新を行う方法を解説します。
こんな人向けの記事です
- 空のファイルを素早く作成したい方
- ファイルのタイムスタンプを変更する方法を知りたい方
- スクリプトでのファイル管理にtouchを活用したい方
Step 1touchコマンドの基本
touchコマンドは、空のファイルを作成したり、既存ファイルのタイムスタンプを更新するコマンドです。ファイルが存在しない場合は新規作成、存在する場合はタイムスタンプが現在時刻に更新されます。
ターミナル
# 空のファイルを作成
touch newfile.txt
# 複数のファイルを同時に作成
touch file1.txt file2.txt file3.txt
# 既存ファイルのタイムスタンプを更新
touch existing_file.txt
# ブレース展開で一括作成
touch test_{01,02,03,04,05}.txt
touchの2つの役割: (1) 存在しないファイルを空ファイルとして新規作成 (2) 既存ファイルのタイムスタンプ(更新日時)を現在時刻に更新
Step 2タイムスタンプの更新
touchコマンドでは、特定の日時を指定してタイムスタンプを変更できます。
ターミナル
# 特定の日時を指定(-t オプション)
touch -t 202401011200.00 file.txt # 2024年1月1日12:00:00
# 日付文字列で指定(-d オプション)
touch -d "2024-06-15 10:30:00" file.txt
touch -d "yesterday" file.txt
touch -d "2 days ago" file.txt
# アクセス時間のみ更新
touch -a file.txt
# 更新時間のみ更新
touch -m file.txt
# 他のファイルと同じタイムスタンプにする
touch -r reference_file.txt target_file.txt
| タイムスタンプ | 説明 |
|---|---|
| atime(アクセス時間) | 最後にファイルを読み取った時間 |
| mtime(更新時間) | 最後にファイルの内容を変更した時間 |
| ctime(変更時間) | メタデータ(権限等)が変更された時間 |
Step 3よく使うオプション一覧
touchコマンドの主要なオプションを紹介します。
ターミナル
# ファイルが存在しない場合は作成しない
touch -c nonexistent.txt # 存在しなくても何もしない
# 参照ファイルのタイムスタンプをコピー
touch -r source.txt target.txt
| オプション | 説明 |
|---|---|
-a | アクセス時間のみ更新 |
-m | 更新時間のみ更新 |
-c | ファイルが存在しない場合は作成しない |
-t STAMP | タイムスタンプを指定([[CC]YY]MMDDhhmm[.ss]) |
-d STRING | 日付文字列でタイムスタンプを指定 |
-r FILE | 参照ファイルのタイムスタンプを使用 |
Step 4実践的な使用例
開発やシステム管理でよく使用されるtouchの実践例を紹介します。
ターミナル
# Pythonプロジェクトの__init__.pyを作成
find . -type d -exec touch {}/__init__.py \;
# ログファイルの初期化(内容を保持してタイムスタンプ更新)
touch /var/log/app.log
# ロックファイルの作成
touch /tmp/myapp.lock
# プレースホルダーファイルの作成
touch README.md .gitignore .env.example
# Makefileのビルド制御(ファイルを最新にする)
touch source_file.c # 再ビルドをトリガー
# 一括でタイムスタンプを統一
find . -name "*.txt" -exec touch -r reference.txt {} +
# タイムスタンプでファイルの新旧を制御
touch -d "2024-01-01" old_file.txt
touch -d "2025-01-01" new_file.txt
touchとリダイレクトの違い: touch file.txtは既存ファイルの内容を保持しますが、> file.txtは内容を空にします。既存ファイルの内容を守りたい場合はtouchを使いましょう。