touch -dオプションの使い方を完全ガイド!初心者でもわかる日付指定のタイムスタンプ操作
生徒
「Linuxのtouchコマンドって、ファイルの更新日時を変えられるんですよね?」
先生
「その通りです。特に-dオプションを使えば、好きな日付に設定できますよ。」
生徒
「えっ、今じゃなくて、例えば去年の日付にもできるんですか?」
先生
「はい、任意の日付に設定できます。ファイルの履歴を整えたいときなどにも便利ですよ。」
1. touchコマンドの基本とは?
touchコマンドは、Linux(リナックス)環境で使われる基本的なコマンドで、主にファイルの作成や更新日時(タイムスタンプ)の変更に使われます。ファイル操作の中でも非常に使用頻度が高いため、初心者にとってはまず覚えておきたいコマンドの一つです。
たとえば、以下のように実行すると:
touch log.txt
ファイルlog.txtが存在しない場合は新しく作られ、存在する場合はその更新日時だけが今の時刻に変更されます。
2. -dオプションの意味と用途
-dオプションは、任意の日付や時間を指定してファイルの更新日時(タイムスタンプ)を変更するためのオプションです。たとえば「昨日の日時」や「2024年1月1日12時00分」など、自由な日時形式を指定することができます。
実行例:
touch -d "2024-01-01 12:00:00" log.txt
このコマンドにより、log.txtの更新日時が「2024年1月1日12時00分」に設定されます。
3. 実際の使用例と動作確認
それでは、実際に-dオプションを使った具体例を見てみましょう。
(1)ファイルを作成して日時を設定
touch -d "2022-12-31 23:59:59" year_end.txt
ls -l year_end.txt
-rw-r--r-- 1 user user 0 12月 31 23:59 year_end.txt
ファイルyear_end.txtが存在しなければ作成され、指定した日時に更新されます。
(2)既存ファイルのタイムスタンプだけ変更
touch example.txt
touch -d "2023-07-15 10:00" example.txt
ls -l example.txt
-rw-r--r-- 1 user user 0 7月 15 10:00 example.txt
このように、すでにあるファイルにも自由に日時を設定できます。
4. 対応する日時の書式とは?
-dオプションでは、以下のような自然な形式の日時が使用可能です:
"YYYY-MM-DD HH:MM:SS"(例:"2024-01-01 09:00:00")"yesterday"(昨日)"next Monday"(次の月曜日)"2 days ago"(2日前)"now"(現在)
たとえば、「一昨日」に設定したい場合は、以下のように記述します。
touch -d "2 days ago" report.txt
5. よく使うケースと活用例
touch -dオプションは、以下のような場面でとても便利です。
- 過去のバックアップファイルの整合性を保ちたいとき
- スクリプトでログファイルの日時を操作したいとき
- 開発テストで特定日時の動作を再現したいとき
(例)ログファイルを昨日の日時に設定
touch -d "yesterday" access.log
(例)特定の日付でスクリプトテスト
#!/bin/bash
for i in {1..3}
do
filename="test_$i.txt"
touch "$filename"
touch -d "2023-03-0$i 15:00:00" "$filename"
done
このように、ループ処理と組み合わせれば複数のファイルにそれぞれ異なる日時を設定できます。
6. -tオプションとの違い
-dと似たような機能を持つオプションに-tがありますが、これは日時を特殊な数字形式([[CC]YY]MMDDhhmm[.ss])で指定する方法です。
たとえば、-tで同じ日時を指定するには以下のようになります:
touch -t 202401010900.00 log.txt
-dの方が自然な書き方で使えるため、初心者には-dの方がおすすめです。