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

find -mtimeオプションを完全解説!初心者でもわかる更新日でファイルを検索する方法

find -mtimeオプション|更新日を基準に検索する
find -mtimeオプション|更新日を基準に検索する

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

生徒

「Linuxで、最近変更されたファイルだけを探す方法ってありますか?」

先生

「はい、それにはfindコマンドの-mtimeオプションを使うと便利ですよ。」

生徒

「その-mtimeって何を意味してるんですか?」

先生

-mtimeはファイルが最後に更新(修正)された日数を基準に検索できるオプションです。それでは、詳しく説明していきましょう!」

1. findコマンドとは?

1. findコマンドとは?
1. findコマンドとは?

findコマンドは、Linuxでファイルやディレクトリを検索するためのコマンドです。検索の条件として、ファイル名やサイズ、所有者、更新日時など、さまざまな項目を指定できます。

今回はその中でも更新日を基準に検索する方法に注目します。更新日とは、ファイルが最後に修正された日を指します。

2. -mtimeオプションとは?

2. -mtimeオプションとは?
2. -mtimeオプションとは?

-mtimeは、ファイルの更新日から何日経過したかを基準に検索できるオプションです。

たとえば、以下のような使い方ができます。

  • -mtime 0 → 今日変更されたファイル
  • -mtime 1 → 昨日変更されたファイル
  • -mtime -3 → 過去3日以内に変更されたファイル
  • -mtime +7 → 1週間以上前に変更されたファイル

数値の前に付く記号には意味があります:

  • +(プラス):より古い(指定日数より前)
  • -(マイナス):より新しい(指定日数以内)
  • 数値だけ:ちょうどその日数前

3. 実際のコマンド例

3. 実際のコマンド例
3. 実際のコマンド例

それでは、実際に-mtimeオプションを使ってみましょう。以下のコマンドは、カレントディレクトリ(現在のフォルダ)以下で、過去1日以内に変更されたファイルを探します。


find . -mtime -1
./report.txt
./data/update.log

.」は、現在のディレクトリを意味します。

4. -type f を併用してファイルだけを検索

4. -type f を併用してファイルだけを検索
4. -type f を併用してファイルだけを検索

ディレクトリ(フォルダ)も含まれてしまうのを避けたいときは、-type fを使いましょう。fは「file(ファイル)」の略です。


find . -type f -mtime -2
./memo.txt
./logs/error.log

このようにすると、2日以内に更新されたファイルのみが表示されます。

5. -mtimeと他のオプションの組み合わせ

5. -mtimeと他のオプションの組み合わせ
5. -mtimeと他のオプションの組み合わせ

-mtimeは、他のオプションと組み合わせて、さらに細かく検索することができます。たとえば、特定の拡張子を持つファイルだけを探すには-nameと組み合わせます。


find . -type f -name "*.log" -mtime -7
./logs/system.log
./logs/error.log

この例では、「*.log」というログファイルで、7日以内に更新されたものを探しています。

6. -mtimeと-secondsの違い

6. -mtimeと-secondsの違い
6. -mtimeと-secondsの違い

-mtime「24時間単位」で計算されます。そのため、例えば-mtime 1は「24〜48時間前に更新されたファイル」になります。

「もっと細かく、例えば3時間前に変更されたファイルを探したい」と思ったときは、-mmin(分単位)を使います。


find . -type f -mmin -180
./recent.txt

このコマンドは180分(3時間)以内に更新されたファイルを探します。

7. よくある疑問と注意点

7. よくある疑問と注意点
7. よくある疑問と注意点

Q. ディレクトリも結果に含まれてしまうんですが?
-type fをつけましょう。これでファイルのみに絞れます。

Q. 日付ではなく「何時間前」とかで指定できないの?
-mtimeではなく-mminを使うことで、分単位の時間指定が可能です。

Q. 何も表示されないんですが?
→ 該当するファイルがない可能性があります。まずtouchコマンドでテスト用ファイルを作って確認してみましょう。

8. ファイルの更新日時を確認するには?

8. ファイルの更新日時を確認するには?
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日以内に変更されたファイルのバックアップ

9. 実用例:3日以内に変更されたファイルのバックアップ
9. 実用例:3日以内に変更されたファイルのバックアップ

例えば「3日以内に変更されたファイルをバックアップフォルダへコピー」したい場合は、-mtime-execを組み合わせます。


find . -type f -mtime -3 -exec cp {} /backup \;

{}は見つかったファイル名を意味し、\;-execの終了を示しています。

関連記事:
カテゴリの一覧へ
新着記事
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オプションを完全ガイド!初心者でもわかるタイムスタンプのフル表示方法