touch -tオプションの使い方を完全ガイド!初心者でもわかる日時形式のタイムスタンプ設定
生徒
「Linuxのtouchコマンドで、自由に日付や時間を設定したいときってどうすればいいんですか?」
先生
「その場合は-tオプションを使えば、正確な日時を数値形式で設定できますよ。」
生徒
「どんな形式で書けばいいんですか?覚えるの難しそう…」
先生
「大丈夫です。パターンを覚えれば簡単ですよ。ゆっくり解説していきましょう。」
1. touchコマンドとは?
touch(タッチ)コマンドは、Linuxでファイルの更新日時(タイムスタンプ)を変更したり、空のファイルを新規作成するための基本コマンドです。ファイルの操作やログ管理などで広く使われる重要なコマンドの一つです。
たとえば、以下のように使うとファイルが作られます:
touch report.txt
このコマンドで、report.txtが存在しない場合は新しく作られ、存在する場合は更新日時のみが現在の日時に書き換えられます。
2. -tオプションの概要と役割
-tオプションは、ファイルの更新日時を正確な日時形式で指定できるようにするものです。たとえば、「2025年12月31日23時59分59秒」というような日時を、数字の形式で設定できます。
指定する形式は以下のようになります:
[[CC]YY]MMDDhhmm[.ss]
- CC:世紀(20なら2000年代)
- YY:年(例:25なら2025年)
- MM:月(01〜12)
- DD:日(01〜31)
- hh:時(00〜23)
- mm:分(00〜59)
- .ss:秒(省略可能)
つまり、「2025年12月31日23時59分59秒」を設定したい場合、こう書きます:
touch -t 202512312359.59 sample.txt
3. 実際の使用例と確認方法
(1)ファイルを指定日時で作成
touch -t 202401011200.00 newyear.txt
ls -l newyear.txt
-rw-r--r-- 1 user user 0 1月 1 12:00 newyear.txt
この例では、「2024年1月1日12時00分00秒」にタイムスタンプが設定されています。
(2)すでに存在するファイルの日時を変更
touch oldfile.txt
touch -t 202310101500.00 oldfile.txt
ls -l oldfile.txt
-rw-r--r-- 1 user user 0 10月 10 15:00 oldfile.txt
既存のファイルにも、簡単に日時を上書きできます。
4. 書式を覚えるコツと間違えやすい点
数字が並んでいて混乱しがちですが、年月日時分秒の順番で8桁または10桁と覚えると分かりやすいです。
よくある間違い:
- 「13月」などの存在しない月を入力してしまう
- 日付が「00日」などでエラーになる
- 桁数が足りずにエラーになる
必ず8桁または10桁(秒まで)で記述しましょう。
5. -dオプションとの違い
touchコマンドには-dオプションもありますが、-tと何が違うのでしょうか?
-t:数字で厳密な書式を指定(機械的で正確)-d:人間が読みやすい自然な表現(例:「yesterday」)が使える
-tの方がスクリプトや自動処理に向いていて、-dは日付を自由に指定したいときに便利です。
6. スクリプトでの活用例
たとえば、バックアップファイルにそれぞれ異なる日時を設定することで、見た目の整理をしたいときがあります。
#!/bin/bash
for i in 1 2 3
do
fname="backup_$i.log"
touch "$fname"
touch -t 2024090${i}1200.00 "$fname"
done
このスクリプトでは、3つのログファイルにそれぞれ違う日付(2024年9月1日~3日)の正午を設定しています。
7. -tオプションの活用場面まとめ
この-tオプションは、次のような場面で非常に重宝されます:
- 開発時に日時を特定の値にそろえたいとき
- ログファイルのテストや確認
- バックアップファイルに日付を付与して整理したいとき
- スクリプト内で確実な日時指定が必要なとき