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

touch -aオプション|アクセス時刻だけを変更する方法をやさしく解説

touch -aオプション|アクセス時刻だけを変更する方法
touch -aオプション|アクセス時刻だけを変更する方法

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

生徒

「Linuxでファイルの時間を変更するって聞いたんですけど、どんな意味なんですか?」

先生

「Linuxでは、ファイルが最後に読まれた時刻や更新された時刻が記録されています。それを変更することもできるんですよ。」

生徒

「その中でもアクセス時刻だけを変える方法ってあるんですか?」

先生

「それにはtouch -aというオプションを使います。実際に見てみましょう。」

1. アクセス時刻とは?

1. アクセス時刻とは?
1. アクセス時刻とは?

Linuxでは、ファイルには3つの時刻情報があります:

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

アクセス時刻は、ファイルの中身を「見ただけ」の場合でも更新されます。たとえば、catコマンドでファイルを読んだだけでも変わります。

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

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

touch -aオプションは、ファイルのアクセス時刻だけを変更したいときに使います。通常のtouchコマンドは、アクセス時刻と更新時刻の両方を変えてしまいますが、-aを使えばアクセス時刻だけに限定できます。


touch -a sample.txt

このコマンドは、ファイル「sample.txt」のアクセス時刻だけを現在時刻に変更します。

3. アクセス時刻の確認方法

3. アクセス時刻の確認方法
3. アクセス時刻の確認方法

アクセス時刻を確認するには、statコマンドを使います。


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

Accessの行が、アクセス時刻を示しています。

4. タイムスタンプを指定して変更する

4. タイムスタンプを指定して変更する
4. タイムスタンプを指定して変更する

アクセス時刻を任意の日時に設定したい場合は、-tオプションを組み合わせて使います。


touch -a -t 202509160900 sample.txt

この例では、「2025年9月16日9時00分」にアクセスしたことに変更されます。

タイムスタンプは「YYYYMMDDhhmm」の形式で指定します。

5. 更新時刻を変えずにアクセス時刻だけ変えるメリット

5. 更新時刻を変えずにアクセス時刻だけ変えるメリット
5. 更新時刻を変えずにアクセス時刻だけ変えるメリット

たとえば、あるファイルがいつ最終的に読まれたかだけを記録したい場合、更新時刻をそのまま残したいことがあります。そのようなときに-aオプションが便利です。

バックアップスクリプトやアクセスログのような仕組みにおいて、「読み取り操作があったことだけを記録したい」という場面に役立ちます。

6. 更新時刻(-m)との違いと使い分け

6. 更新時刻(-m)との違いと使い分け
6. 更新時刻(-m)との違いと使い分け

touchコマンドには、-mという更新時刻だけを変更するオプションもあります。


touch -m sample.txt

こちらはファイルの中身に変更があったかのように、更新時刻を上書きする操作です。

-a-mは併用も可能で、その場合は両方の時刻が変わります。


touch -a -m sample.txt

7. 空ファイルに対するアクセス時刻だけの変更

7. 空ファイルに対するアクセス時刻だけの変更
7. 空ファイルに対するアクセス時刻だけの変更

中身が空っぽのファイルでも、アクセス時刻だけを変更することができます。

たとえばログファイルなどで、内容はそのままにして「読んだ記録」だけを残しておきたいときに使われます。


touch -a empty.log

8. アクセス時刻の変更が禁止されているケース

8. アクセス時刻の変更が禁止されているケース
8. アクセス時刻の変更が禁止されているケース

一部のLinux環境では、noatime(アクセス時刻を記録しない)マウントオプションが設定されていることがあります。その場合、ファイルを読んでもアクセス時刻が更新されません。

そのような環境でも、touch -aを使えば、明示的にアクセス時刻を変更することが可能です。

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

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

touch -aは、シェルスクリプトの中でファイルのアクセス時刻を人工的にコントロールしたいときにも使われます。

たとえば、何らかの「読み取り済み」フラグとして利用する場合や、ログローテーションを手動で制御したいときに活用されます。


#!/bin/bash
touch -a -t 202509150000 /var/log/mylog.log

このように記述すれば、スクリプトで自動的にアクセス時刻を変更できます。

関連記事:
カテゴリの一覧へ
新着記事
touch --no-createオプションの使い方を完全ガイド!初心者でもわかるファイルの新規作成防止法
basenameのSUFFIX指定で拡張子を除いてファイル名を取得する方法を解説!初心者向けLinuxコマンド講座
mv -tオプションの使い方|移動先ディレクトリを先に指定する便利な方法
lsコマンドの-rオプション|逆順(降順)でファイルを並べる方法を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.2
Java&Spring記事人気No2
lsコマンドの-lオプションでファイルの詳細情報を一覧表示しよう!初心者でもわかる使い方と意味を徹底解説
No.3
Java&Spring記事人気No3
rm -Rオプションとは?初心者でもわかる再帰的にディレクトリを削除する方法
No.4
Java&Spring記事人気No4
Linuxコマンドpwd --help解説|オプション一覧を表示して使い方を確認する方法