開発をしていると、ソースファイルや設定ファイルの場所を忘れてしまうことが良くあります。
そんなときに、findコマンドで一発検索、サクッとファイルの居場所を教えてくれます。
今回は、findコマンドで日時指定をして、ファイルやディレクトリを検索する方法になります。
目次
findでファイルの日時検索(mmin、mtime)
findコマンド構成
findコマンドでファイルの日時指定をして検索するときのコマンド構成になります。
上記の評価式に最適な検索条件を指定することにより、検索したい条件に合わせた日時でファイル検索を行うことができます。
評価式一覧
まずは、評価式の内容をみてみましょう。
ファイルの更新日時、アクセス日時、ステータスが変更された日時で検索することができます。
評価式 | 詳細 |
-mmin 分数 | 分数のところに数値を指定し検索します。少数点指定もできます。
「-mmin 5」現在の時刻から5分前に更新されたファイル、ディレクトリを検索 |
-mtime 日数 | 日数のところに数値を指定し検索します。少数点指定もできます。
「-mtime 2」現在の時刻から2日(48時間)前に更新されたファイル、ディレクトリを検索 |
-newer ファイル | 「-newer 指定ファイル」指定したファイルの更新時間以降に更新されたファイル、ディレクトリを検索 |
-amin 分数 | 分数のところに数値を指定し検索します。少数点指定もできます。
「-amin 5」現在の時刻から5分前にアクセスされたファイル、ディレクトリを検索 |
-atime 日数 | 日数のところに数値を指定し検索します。少数点指定もできます。
「-atime 2」現在の時刻から2日(48時間)前にアクセスされたファイル、ディレクトリを検索 |
-anewer ファイル | 「-anewer ファイル指定」指定したファイルのアクセス時間以降にアクセスされたファイル、ディレクトリを検索 |
-cmin 分数 | 分数のところに数値を指定し検索します。少数点指定もできます。
「-cmin 5」現在の時刻から5分前にステータスが変更されたファイル、ディレクトリを検索 |
-ctime 日数 | 日数のところに数値を指定し検索します。少数点指定もできます。
「-ctime 2」現在の時刻から2日(48時間)前にステータスが変更されたファイル、ディレクトリを検索 |
-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コマンドを使ったファイルの日時指定の方法を紹介しました。
サイトマップはこちら↓