find -mtimeオプションを完全解説!初心者でもわかる更新日でファイルを検索する方法
生徒
「Linuxで、最近変更されたファイルだけを探す方法ってありますか?」
先生
「はい、それにはfindコマンドの-mtimeオプションを使うと便利ですよ。」
生徒
「その-mtimeって何を意味してるんですか?」
先生
「-mtimeはファイルが最後に更新(修正)された日数を基準に検索できるオプションです。それでは、詳しく説明していきましょう!」
1. findコマンドとは?
findコマンドは、Linuxでファイルやディレクトリを検索するためのコマンドです。検索の条件として、ファイル名やサイズ、所有者、更新日時など、さまざまな項目を指定できます。
今回はその中でも更新日を基準に検索する方法に注目します。更新日とは、ファイルが最後に修正された日を指します。
2. -mtimeオプションとは?
-mtimeは、ファイルの更新日から何日経過したかを基準に検索できるオプションです。
たとえば、以下のような使い方ができます。
-mtime 0→ 今日変更されたファイル-mtime 1→ 昨日変更されたファイル-mtime -3→ 過去3日以内に変更されたファイル-mtime +7→ 1週間以上前に変更されたファイル
数値の前に付く記号には意味があります:
- +(プラス):より古い(指定日数より前)
- -(マイナス):より新しい(指定日数以内)
- 数値だけ:ちょうどその日数前
3. 実際のコマンド例
それでは、実際に-mtimeオプションを使ってみましょう。以下のコマンドは、カレントディレクトリ(現在のフォルダ)以下で、過去1日以内に変更されたファイルを探します。
find . -mtime -1
./report.txt
./data/update.log
「.」は、現在のディレクトリを意味します。
4. -type f を併用してファイルだけを検索
ディレクトリ(フォルダ)も含まれてしまうのを避けたいときは、-type fを使いましょう。fは「file(ファイル)」の略です。
find . -type f -mtime -2
./memo.txt
./logs/error.log
このようにすると、2日以内に更新されたファイルのみが表示されます。
5. -mtimeと他のオプションの組み合わせ
-mtimeは、他のオプションと組み合わせて、さらに細かく検索することができます。たとえば、特定の拡張子を持つファイルだけを探すには-nameと組み合わせます。
find . -type f -name "*.log" -mtime -7
./logs/system.log
./logs/error.log
この例では、「*.log」というログファイルで、7日以内に更新されたものを探しています。
6. -mtimeと-secondsの違い
-mtimeは「24時間単位」で計算されます。そのため、例えば-mtime 1は「24〜48時間前に更新されたファイル」になります。
「もっと細かく、例えば3時間前に変更されたファイルを探したい」と思ったときは、-mmin(分単位)を使います。
find . -type f -mmin -180
./recent.txt
このコマンドは180分(3時間)以内に更新されたファイルを探します。
7. よくある疑問と注意点
Q. ディレクトリも結果に含まれてしまうんですが?
→ -type fをつけましょう。これでファイルのみに絞れます。
Q. 日付ではなく「何時間前」とかで指定できないの?
→ -mtimeではなく-mminを使うことで、分単位の時間指定が可能です。
Q. 何も表示されないんですが?
→ 該当するファイルがない可能性があります。まずtouchコマンドでテスト用ファイルを作って確認してみましょう。
8. ファイルの更新日時を確認するには?
検索する前に、ファイルの更新日時を確認してみましょう。ls -lで表示できます。
ls -l sample.txt
-rw-r--r-- 1 user user 1024 Sep 16 09:30 sample.txt
この「Sep 16 09:30」が、最後に更新された日時です。
9. 実用例:3日以内に変更されたファイルのバックアップ
例えば「3日以内に変更されたファイルをバックアップフォルダへコピー」したい場合は、-mtimeと-execを組み合わせます。
find . -type f -mtime -3 -exec cp {} /backup \;
{}は見つかったファイル名を意味し、\;で-execの終了を示しています。
まとめ
今回はLinuxでファイル検索を行う際に非常に重要となるfindコマンドのmtimeオプションについて詳しく解説しました。findコマンドはディレクトリ内のファイルを条件に応じて検索できる強力な機能を持っており、特に更新日時を基準にした検索は日々の運用や保守作業において欠かせない知識です。ログファイルの確認やバックアップ対象の抽出、不要ファイルの削除など、実務のさまざまな場面で活用できます。
mtimeオプションはファイルの最終更新日を基準に検索できる点が大きな特徴であり、数値の前に付ける記号によって検索範囲を柔軟に指定できることが理解のポイントです。例えばマイナスを付けることで指定日数以内の新しいファイルを抽出でき、プラスを付けることで指定日数よりも古いファイルを簡単に見つけることが可能です。このような指定方法を正しく理解することで、必要なファイルを効率よく見つけられるようになります。
またtypeオプションを組み合わせることでファイルのみに限定した検索ができる点も重要です。ディレクトリを除外したい場合にはtype fを使うことで無駄な結果を減らし、作業効率を向上させることができます。さらにnameオプションと組み合わせれば特定の拡張子に絞った検索も可能になり、ログファイルや設定ファイルなど目的に応じた抽出が簡単に行えます。
実務でよく使われる例としては、一定期間内に更新されたファイルのバックアップや古いファイルの整理があります。例えば三日以内に更新されたファイルをまとめて別のディレクトリにコピーすることで、重要な変更内容を安全に保管することができます。このような処理は定期的に行うことでシステムの安定運用にもつながります。
次のサンプルでは、実際の運用を想定した形でコマンドをまとめています。findコマンドの基本から応用までを確認しながら理解を深めていきましょう。
サンプルプログラム
以下は三日以内に更新されたファイルを検索し、バックアップディレクトリにコピーする例です。実務でもよく使われるパターンなので覚えておくと便利です。
find . -type f -mtime -3 -exec cp {} /backup \;
./report.txt
./logs/system.log
また、一週間以上前に更新された古いファイルを確認することで不要なデータの整理にも役立ちます。
find . -type f -mtime +7
./old/data1.log
./archive/backup.tar
さらに分単位で細かく指定したい場合にはmminオプションを活用することで、より精密な検索が可能になります。短時間の変更を確認したい場合に有効です。
find . -type f -mmin -60
./recent/update.txt
このようにfindコマンドとmtimeオプションを使いこなすことで、Linux環境におけるファイル管理の効率は大きく向上します。日常的に使うコマンドとして習得しておくことで、トラブル対応や運用作業をスムーズに進めることができるでしょう。
生徒
「findコマンドってただの検索だけだと思っていましたが、更新日まで指定できるのは便利ですね」
先生
「その通りです。特にmtimeを使うと最近の変更や古いファイルの整理が簡単になります」
生徒
「マイナスやプラスの意味が最初は難しかったですが、使い分けることで細かく検索できるのが分かりました」
先生
「理解できていますね。マイナスは新しいファイル、プラスは古いファイルと覚えておくと便利です」
生徒
「typeオプションやnameオプションと組み合わせることで、さらに絞り込めるのも実用的ですね」
先生
「はい。実務では複数の条件を組み合わせることで目的のファイルを正確に見つけることが重要になります」
生徒
「バックアップやログ確認にも使えるので、すぐに活用できそうです」
先生
「ぜひ日々の作業で使ってみてください。繰り返し使うことで自然と身につきますよ」