find -atimeオプションの使い方を完全ガイド!アクセス日でファイルを検索する方法
生徒
「Linuxで、最後に開いたファイルを探す方法ってありますか?」
先生
「それなら、findコマンドの-atimeオプションを使えば簡単に見つけられるよ。」
生徒
「えっ!?アクセス時間ってどういう意味ですか?」
先生
「アクセス時間とは、ファイルを開いた日時のことだよ。詳しく見ていこう!」
1. find -atimeオプションとは?
find -atimeオプションは、Linuxのfindコマンドの一部で、「ファイルが最後にアクセスされた日(開かれた日)」を基準に検索できる機能です。
アクセス日とは、ファイルを編集したり削除したりしていなくても、「開いただけ」で記録される日時のことです。例えば、テキストエディタや画像ビューアで開いただけでも、「アクセスした」とみなされます。
2. 基本的な使い方:直近3日以内にアクセスされたファイル
ホームディレクトリ内で、3日以内にアクセスされたファイルを検索するには、次のように書きます。
find ~ -atime -3
/home/user/Documents/notes.txt
/home/user/Downloads/sample.jpg
-3のように「マイナス記号(-)」をつけると、「3日より新しい(=直近3日以内)」という意味になります。
3. ぴったり◯日前にアクセスされたファイルを探す
例えば、「ちょうど5日前にアクセスされたファイル」を探したい場合は、次のように指定します。
find ~ -atime 5
/home/user/logs/old_log.txt
5とだけ書くと、「5日前の深夜0時から23時59分59秒の間にアクセスされたファイル」だけが検索対象になります。
4. ◯日より前にアクセスされた古いファイルを検索する
例えば、「30日以上前にアクセスされた古いファイル」を探したいなら次のように書きます。
find ~ -atime +30
/home/user/old_data/archive.zip
+30とすると、「30日より前」にアクセスされたファイルだけが検索されます。
5. atimeの計算は「24時間単位」
ここが重要ポイントです。-atimeの「日」は、カレンダーの日付ではなく、
たとえば、今が9月16日 15時であれば、「1日前」は9月15日15時以降にアクセスされたもの、「+1」は9月15日15時よりも前にアクセスされたものが対象です。
6. -typeと組み合わせてファイルだけを検索
findコマンドは、ファイルだけでなくディレクトリも検索します。ファイルだけに限定したい場合は、-type fを組み合わせます。
find ~ -type f -atime +60
/home/user/old/backup.tar.gz
この例では、「60日以上前にアクセスされたファイル」を探しています。
7. 管理者向け:不要ファイルの整理にも便利
-atimeオプションは、サーバー管理やシステムの保守作業で、しばらく使われていないファイルを洗い出すのに役立ちます。
特に、ログファイルや一時ファイルが大量にある場合、「古いけど誰も使っていないファイル」を見つけて整理できます。
find /var/log -type f -atime +90
/var/log/apache2/access.log.1
/var/log/mysql/old.err
8. -deleteと組み合わせて自動削除(注意!)
さらに、-deleteオプションと組み合わせることで、一定期間アクセスされていないファイルを自動で削除することも可能です。
ただし、間違えると必要なファイルまで消してしまうので、-deleteの前に必ず-printで確認しましょう。
find /tmp -type f -atime +10 -print -delete
/tmp/temp_file1.txt
/tmp/temp_file2.log
この例では、/tmp内で10日以上アクセスされていないファイルを表示してから削除しています。
9. mtimeやctimeとの違いは?
atimeと似たオプションに、mtimeやctimeがあります。それぞれの違いは次の通りです。
- atime:ファイルを「開いた」日時
- mtime:ファイルを「編集・変更」した日時
- ctime:ファイルの「属性が変化した」日時(パーミッション変更など)
「読み取ったかどうか」を基準にしたい場合は、atimeを使いましょう。
10. 検索時間の精度を上げるには-noatimeマウントの確認も
環境によっては、ファイルアクセス時間が更新されないこともあります。それは、noatimeというマウントオプションが有効になっているためです。
ディスクのアクセス速度を上げるために、atimeの更新を無効にする設定ですが、-atimeで正しく検索できなくなる場合があります。
正確に調査したいときは、まず自分の環境がnoatimeになっていないか確認しましょう。