カテゴリ: Linuxコマンド集 更新日: 2025/12/21

touch -mオプション|修正時刻だけを変更する方法を初心者向けに解説

touch -mオプション|修正時刻だけを変更する方法
touch -mオプション|修正時刻だけを変更する方法

先生と生徒の会話形式で理解しよう

生徒

「Linuxでファイルの時間を変更できるって聞いたんですけど、それってどういうことですか?」

先生

「Linuxのファイルには、いつ変更されたかや、いつ読まれたかなどの時刻情報が記録されています。それを変更することもできるんですよ。」

生徒

「中でも修正時刻だけを変えたいときは、どうすればいいんですか?」

先生

「それにはtouch -mというオプションを使います。詳しく説明していきますね。」

1. 修正時刻(mtime)とは?

1. 修正時刻(mtime)とは?
1. 修正時刻(mtime)とは?

Linuxのファイルには、次の3種類の時刻情報が存在します:

  • アクセス時刻(atime):ファイルを最後に読んだ時間
  • 修正時刻(mtime):ファイルの内容を変更した時間
  • 状態変更時刻(ctime):パーミッションや所有者を変更した時間

この中でmtimeは、ファイルの中身に何か書き込んだときに更新されます。たとえば、テキストを追記したり、上書き保存したりすると変わります。

2. touch -mの基本的な使い方

2. touch -mの基本的な使い方
2. touch -mの基本的な使い方

touchコマンドに-mオプションを付けることで、修正時刻(mtime)だけを変更することができます。

たとえば次のように使います。


touch -m sample.txt

このコマンドは、ファイル「sample.txt」の修正時刻だけを現在時刻に更新します。中身は何も変わりません。

3. statコマンドで修正時刻を確認しよう

3. statコマンドで修正時刻を確認しよう
3. statコマンドで修正時刻を確認しよう

修正時刻が変わったかどうかは、statコマンドで確認できます。


stat sample.txt
  File: sample.txt
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Access: 2025-09-16 09:30:00.000000000 +0900
Modify: 2025-09-16 10:00:00.000000000 +0900
Change: 2025-09-16 10:00:00.000000000 +0900

ここで「Modify」が修正時刻です。touch -mを使うことで、この「Modify」だけを更新できます。

4. 修正時刻を指定して変更する

4. 修正時刻を指定して変更する
4. 修正時刻を指定して変更する

-tオプションと組み合わせることで、任意の日時に設定することもできます。


touch -m -t 202509161200 sample.txt

この例では、「2025年9月16日12時00分」に修正されたことになります。日時の形式はYYYYMMDDhhmmです。

5. -aオプションとの違いと併用

5. -aオプションとの違いと併用
5. -aオプションとの違いと併用

-aオプションはアクセス時刻(atime)だけを変更しますが、-mオプションは修正時刻(mtime)だけを変更します。

両方同時に変更したいときは、次のように書きます。


touch -a -m sample.txt

これで、アクセス時刻と修正時刻が同時に変更されます。

6. 中身を変えずに修正時刻だけ変える理由

6. 中身を変えずに修正時刻だけ変える理由
6. 中身を変えずに修正時刻だけ変える理由

一見、不自然に感じるかもしれませんが、実際には修正していないのに修正時刻だけを変更したいという場面はあります。

たとえば:

  • 自動処理で「最近更新されたファイル」として認識させたいとき
  • 特定の日時に修正されたように見せたいテスト環境での操作
  • バックアップや同期スクリプトの動作を確認したいとき

こうした場合、touch -mは非常に便利なLinuxコマンドになります。

7. lsコマンドで修正時刻を見る

7. lsコマンドで修正時刻を見る
7. lsコマンドで修正時刻を見る

ls -lコマンドでも修正時刻を確認できます。ただし、表示されるのは修正時刻だけで、アクセス時刻などは表示されません。


ls -l
-rw-r--r-- 1 user user 0 Sep 16 12:00 sample.txt

このように「Sep 16 12:00」という部分が修正時刻を示しています。

8. 複数ファイルの修正時刻を一括変更

8. 複数ファイルの修正時刻を一括変更
8. 複数ファイルの修正時刻を一括変更

touch -mは、複数のファイルを同時に処理することも可能です。


touch -m file1.txt file2.txt file3.txt

このようにすれば、3つのファイルすべての修正時刻が現在時刻に更新されます。

9. 自動スクリプトでの活用例

9. 自動スクリプトでの活用例
9. 自動スクリプトでの活用例

シェルスクリプトなどで、ファイルの修正時刻を人工的に変えることで、動作確認や自動処理のトリガーに使えます。


#!/bin/bash
touch -m -t 202509150830 /tmp/testfile.txt

このような使い方を覚えておけば、Linuxの自動化にも一歩近づけます。

10. 他のtouchオプションとの使い分け

10. 他のtouchオプションとの使い分け
10. 他のtouchオプションとの使い分け

-mは修正時刻、-aはアクセス時刻、そしてオプションなしは両方を変更します。

ファイルのタイムスタンプを細かく制御したいときは、これらのオプションを正しく使い分けることが大切です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Linuxの修正時刻(mtime)とは何ですか?

Linuxにおける修正時刻(mtime)は、ファイルの中身が変更された日時を示す情報です。たとえば、ファイルにテキストを追記したり、上書き保存したりすると修正時刻が更新されます。
関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
stat -Lオプションの使い方を解説|シンボリックリンクをたどってファイル情報を確認しよう
New2
ファイル・ディレクトリ操作
realpath -eオプションの使い方を解説!Linuxで存在するファイルのみ絶対パスを取得する方法
New3
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
New4
ファイル・ディレクトリ操作
touch --referenceオプションの使い方を完全ガイド!初心者でもわかるタイムスタンプのコピー方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cpコマンドとは?Linuxでファイルやディレクトリをコピーする基本操作を初心者向けに解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
Linuxのls --full-timeオプションを完全ガイド!初心者でもわかるタイムスタンプのフル表示方法