
スポンサーリンク
LinuxやUnix系のシステムで頻繁に使用されるtouch
コマンドは、ファイルのタイムスタンプを変更したり、新しい空ファイルを作成したりするための便利なコマンドです。本記事では、touch
コマンドを使ってファイルのタイムスタンプを自在に操作する方法について、基本から応用まで丁寧に解説していきます。
touchコマンドの基本的な使い方
touch [ファイル名]
上記のようにコマンドを実行すると、指定したファイルが存在しない場合は空のファイルが作成されます。一方、ファイルがすでに存在している場合には、そのファイルの「最終アクセス時刻(atime)」と「最終更新時刻(mtime)」が現在の日時に変更されます。これはログファイルの更新や、ファイルの更新状況を変更したい場合に役立ちます。
たとえば、以下のように使うと新しい空ファイルを作成できます。
touch newfile.txt
これはテキストエディタを開かずに一瞬でファイルを作成できるため、スクリプトのテストや設定ファイルのひな型作成などでも重宝します。
タイムスタンプを指定して変更する
touch
コマンドは、ファイルのタイムスタンプを現在時刻ではなく、任意の日時に設定することもできます。これにより、開発環境やビルド環境における日時の調整や、ログ管理における並び替えの制御が可能になります。
-t
オプションを使う方法
touch -t [[CC]YY]MMDDhhmm[.ss] ファイル名
-t
オプションで使用する[[CC]YY]MMDDhhmm[.ss]
の形式は、日時を数値だけで指定するフォーマットです。それぞれの意味は以下のとおりです、
CC
:世紀(例:20 は 2000年、19 は 1900年)※省略可能YY
:年(00〜99)MM
:月(01〜12)DD
:日(01〜31)hh
:時(00〜23)mm
:分(00〜59).ss
:秒(00〜59)※省略可能
つまり、202412251530.00
は「2024年12月25日15時30分00秒」を意味します。
この形式では、年月日時分秒を一続きの数値で指定します。
例:2024年12月25日 15時30分00秒に設定する場合:
touch -t 202412251530.00 sample.txt
ls -l --time-style=+'%Y/%m/%d %H:%M:%S'
この方法はスクリプトから使う場合に適しており、正確な日時の操作が可能です。
-d
オプションを使う方法(GNU touch)
touch -d "YYYY-MM-DD hh:mm:ss" ファイル名
例:2024年12月25日 15時30分00秒に設定する場合:
touch -d "2024-12-25 15:30:00" sample.txt
このオプションでは、人間にとって読みやすい形式で日時を指定できます。特にシェルで対話的に使う場合や、ログ調整などで過去・未来の日時を柔軟に設定したいときに便利です。
ls -l --time-style=+'%Y/%m/%d %H:%M:%S'
-t
オプションと-d
オプションの違い
-t
と-d
はどちらもtouch
コマンドでタイムスタンプを指定するために使いますが、それぞれ特徴があります。
-t
オプションは、機械的な日時指定が可能です。スクリプト内で正確なタイミングを指定したいときに向いています。-d
オプションは、人間が読みやすい形式で日時を指定できます。日付や時間を自由なフォーマットで記述できるため、対話的な操作や柔軟な記述をしたいときに便利です。
オプション | 読みやすさ | 利用に適した場面 |
---|---|---|
-t | △ | スクリプト、自動処理 |
-d | ◎ | 対話的操作、可読性重視 |
例えば、スクリプト内で年月日時分秒を数値で指定するなら-t
、人が直接入力して確認しながら操作するなら-d
が適しています。
アクセス時刻と更新時刻を個別に設定する
ファイルには複数のタイムスタンプが存在します。主に「アクセス時刻(atime)」と「更新時刻(mtime)」の2つがあり、touch
コマンドではこれらを個別に設定することも可能です。
アクセス時刻だけを変更(-a
)
touch -a -t 202512251530.00 sample.txt
ls -ul --time-style=+'%Y/%m/%d %H:%M:%S'
ls -l --time-style=+'%Y/%m/%d %H:%M:%S'
このコマンドでは、アクセス時刻(atime)だけが変更され、更新時刻(mtime)はそのままになります。これはファイルの利用履歴を擬似的に変更したいときなどに使われます。
更新時刻だけを変更(-m
)
touch -m -t 202512251530.00 sample.txt
ls -ul --time-style=+'%Y/%m/%d %H:%M:%S'
ls -l --time-style=+'%Y/%m/%d %H:%M:%S'
こちらは更新時刻(mtime)のみを変更し、アクセス時刻(atime)は変更しません。
他ファイルのタイムスタンプをコピーする
既存のファイルと同じタイムスタンプを別のファイルに適用したい場合は、-r
オプションを使います。これは複数のファイルの更新日時を揃えるときや、ファイルの更新履歴を模倣したいときに便利です。
touch -r [参照ファイル] [対象ファイル]
例:original.txtのタイムスタンプをcopy.txtへコピー
touch -r original.txt copy.txt
このコマンドを実行すると、copy.txt
のアクセス時刻(atime)および更新時刻(mtime)がoriginal.txt
と同じになります。
まとめ
touch
コマンドは単なる空ファイル作成だけでなく、タイムスタンプの詳細な操作にも役立ちます。スクリプトでのログファイル処理や、テスト環境でのファイル管理など、様々な場面で役立ちます。正しく使いこなすことで、日々の作業効率が向上することが期待できます。ぜひ一度コマンドラインで試してみてください。
Linuxユーザにお勧めの本
![]() | ゼロからわかる Linuxコマンド200本ノック?基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!
新品価格 |

![]() | エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書
新品価格 |

以上で本記事の解説を終わります。
よいITライフを!