Linux

【Linuxコマンド】findでファイルの日時検索(mmin、mtime)

開発をしていると、ソースファイルや設定ファイルの場所を忘れてしまうことが良くあります。
そんなときに、findコマンドで一発検索、サクッとファイルの居場所を教えてくれます。

今回は、findコマンドで日時指定をして、ファイルやディレクトリを検索する方法になります。

findでファイルの日時検索(mmin、mtime)

findコマンド構成

findコマンドでファイルの日時指定をして検索するときのコマンド構成になります。

$ find 検索場所 評価式

上記の評価式に最適な検索条件を指定することにより、検索したい条件に合わせた日時でファイル検索を行うことができます。

評価式一覧

まずは、評価式の内容をみてみましょう。
ファイルの更新日時、アクセス日時、ステータスが変更された日時で検索することができます。

評価式 詳細
-mmin 分数 分数のところに数値を指定し検索します。少数点指定もできます。

-mmin 5」現在の時刻から5分前に更新されたファイル、ディレクトリを検索
-mmin -5」現在の時刻から5分以内に更新されたファイル、ディレクトリを検索
-mmin +5」現在の時刻から5分より前に更新されたファイル、ディレクトリを検索
-mmin -0.5」現在の時刻から0.5分(30秒)以内に更新されたファイル、ディレクトリを検索

-mtime 日数 日数のところに数値を指定し検索します。少数点指定もできます。

-mtime 2」現在の時刻から2日(48時間)前に更新されたファイル、ディレクトリを検索
-mtime -2」現在の時刻から2日(48時間)以内に更新されたファイル、ディレクトリを検索
-mtime +2」現在の時刻から2日(48時間)より前に更新されたファイル、ディレクトリを検索
-mtime -0.5」現在の時刻から0.5日(12時間)以内に更新されたファイル、ディレクトリを検索

-newer ファイル -newer 指定ファイル」指定したファイルの更新時間以降に更新されたファイル、ディレクトリを検索
-amin 分数 分数のところに数値を指定し検索します。少数点指定もできます。

-amin 5」現在の時刻から5分前にアクセスされたファイル、ディレクトリを検索
-amin -5」現在の時刻から5分以内にアクセスされたファイル、ディレクトリを検索
-amin +5」現在の時刻から5分より前にアクセスされたファイル、ディレクトリを検索
-amin -0.5」現在の時刻から0.5分(30秒)以内にアクセスされたファイル、ディレクトリを検索

-atime 日数 日数のところに数値を指定し検索します。少数点指定もできます。

-atime 2」現在の時刻から2日(48時間)前にアクセスされたファイル、ディレクトリを検索
-atime -2」現在の時刻から2日(48時間)以内にアクセスされたファイル、ディレクトリを検索
-atime +2」現在の時刻から2日(48時間)より前にアクセスされたファイル、ディレクトリを検索
-atime -0.5」現在の時刻から0.5日(12時間)以内にアクセスされたファイル、ディレクトリを検索

-anewer ファイル -anewer ファイル指定」指定したファイルのアクセス時間以降にアクセスされたファイル、ディレクトリを検索
-cmin 分数 分数のところに数値を指定し検索します。少数点指定もできます。

-cmin 5」現在の時刻から5分前にステータスが変更されたファイル、ディレクトリを検索
-cmin -5」現在の時刻から5分以内にステータスが変更されたファイル、ディレクトリを検索
-cmin +5」現在の時刻から5分より前にステータスが変更されたファイル、ディレクトリを検索
-cmin -0.5」現在の時刻から0.5分(30秒)以内にステータスが変更されたファイル、ディレクトリを検索

-ctime 日数 日数のところに数値を指定し検索します。少数点指定もできます。

-ctime 2」現在の時刻から2日(48時間)前にステータスが変更されたファイル、ディレクトリを検索
-ctime -2」現在の時刻から2日(48時間)以内にステータスが変更されたファイル、ディレクトリを検索
-ctime +2」現在の時刻から2日(48時間)より前にステータスが変更されたファイル、ディレクトリを検索
-ctime -0.5」現在の時刻から0.5日(12時間)以内にステータスが変更されたファイル、ディレクトリを検索

-cnewer ファイル -cnewer ファイル指定」指定したファイルのステータスが変更された時間以降にステータスが変更されたファイル、ディレクトリを検索

実例 その1(-mmin)

ls –l」コマンドを使って、ファイルの更新日時を確認してみましょう。

$ ls -l ./work/
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test01
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test02
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test03

date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内に更新されたファイル、ディレクトリを検索してみます。
全てのファイルとworkディレクトリがヒットしそうですね。

$ date
2019年  8月 30日 金曜日 16:04:22 JST

$ fine ./work/ -mmin -2
./work/
./work/test01
./work/test02
./work/test03
./work/test

予想通り、全てのファイルとworkディレクトリが検索にヒットしました。

数分後、「date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内に更新されたファイル、ディレクトリを検索してみます。

$ date
2019年  8月 30日 金曜日 16:11:26 JST

$ find ./work/ -mmin -2

今度は検索結果に何もヒットしませんでした。

現在の日時が「16:11」になっているため、現在の日時から2分以内に更新されたファイルが「ありません」という結果になりました。

では、現在の日時から2分以降に更新されたファイル、ディレクトリを検索してみます。

$ find ./work/ -mmin +2
./work/
./work/test01
./work/test03
./work/test02
./work/test

全てのファイルとディレクトリが検索にヒットしました。
このようにファイルの更新日時で検索したいときは、「-mmin」で検索します。

-mtime」の場合は、現在の日時からの時間が日数にかわるだけです。
使い方は「-mmin」と同じになります。

実例 その2(-amin)

ls –ul」コマンドを使って、ファイルのアクセス日時を確認してみましょう。

アクセスとはリード/ライトの意味です。ファイルを開いただけでも日時が更新されます。

$ ls -ul ./work/
-rw-rw-r-- 1 linux linux 0  8月 30 16:27 test
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test01
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test02
-rw-rw-r-- 1 linux linux 0  8月 30 16:27 test03

date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内にアクセスされたファイル、ディレクトリを検索してみます。
test、test03ファイルとworkディレクトリがヒットしそうですね。

$ date
2019年  8月 30日 金曜日 16:28:22 JST

$ find ./work/ -amin -2
./work/
./work/test03
./work/test

予想通り、test、test03ファイルとworkディレクトリがヒットしました。

数分後、「date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内にアクセスされたファイル、ディレクトリを検索してみます。

$ date
2019年  8月 30日 金曜日 16:33:48 JST

$ find ./work/ -amin -2

今度は検索結果に何もヒットしませんでした。

現在の日時が「16:33」になっているため、現在の日時から2分以内に更新されたファイルが「ありません」という結果になりました。
このようにアクセスされたファイルの日時で検索したいときは、「-amin」を使用します。

-atime」の場合は、現在の日時からの時間が日数にかわるだけです。
使い方は「-amin」と同じになります。

実例 その3(-cmin)

「ls –cl」コマンドを使って、ファイルのステータスが変更された日時を確認してみましょう。

今回は、test、test01ファイルの権限を変更してから、ステータスの日時を更新しました。

$ ls -cl ./work/
-rw-rw-rw- 1 linux linux 0  8月 30 17:11 test
-rw-rw-rw- 1 linux linux 0  8月 30 17:11 test01
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test02
-rw-rw-r-- 1 linux linux 0  8月 30 16:03 test03

date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内にステータスが変更されたファイル、ディレクトリを検索してみます。

$ date
2019年  8月 30日 金曜日 17:12:48 JST

$ find ./work/ -cmin -2
./work/
./work/test01
./work/test

test、test03ファイルとworkディレクトリが検索にヒットしました。

数分後、「date」コマンドで現在の日時を確認してみましょう。
その後に、現在の日時から2分以内にステータスが変更されたファイル、ディレクトリを検索してみます。

$ date
2019年  8月 30日 金曜日 17:16:58 JST

$ find ./work/ -cmin -2

今度は検索結果に何もヒットしませんでした。

現在の日時が「17:16」になっているため、現在の日時から2分以内にステータスが更新されたファイルが「ありません」という結果になりました。

このようにステータスが変更されたファイルの日時で検索したいときは、「-cmin」を使用します。

-ctime」の場合は、現在の日時からの時間が日数にかわるだけです。
使い方は「-cmin」と同じになります。

このように、findコマンドでファイルの日時指定を行って検索するときは、「-mmin」、「-mtime」、「-amin」、「-atime」、「-cmin」、「-ctime」の評価式を使用します。
今回は、findコマンドを使ったファイルの日時指定の方法を紹介しました。

サイトマップはこちら↓

▼ Linuxコマンドの記事一覧に戻る

-Linux

Copyright© カズンのブログ , 2020 All Rights Reserved Powered by AFFINGER5.