Linux環境でのシステム開発業務において、
目的のファイルやディレクトリを探したい場面がよくあります。
そんなときに使えるのが、find コマンドです。
- 設定ファイルがどこに配置されているか検索する
- 更新されたファイルだけを確認する
- 容量の大きいファイルを特定する
といったことができるため、調査作業の効率化に欠かせないコマンドです。
検索条件を使い分けることにより、
目的のファイルを効率よく見つけることができるようになります。
本記事では、find コマンドの基本的な使い方をはじめ、
システム開発業務で利用頻度が高いオプションを具体例とともにまとめています。
findコマンドとは
find コマンドは、指定した検索条件でファイルやディレクトリを検索するコマンドです。
設定ファイルのありかを特定したい場合など、
目的のファイルやディレクトリを素早く見つけたいときに使用します。
findコマンドの基本構文
find [検索開始ディレクトリ] [検索条件]検索条件に指定した内容に応じてファイル・ディレクトリを検索します。
システム開発業務でよく使う検索条件については、後述で詳しくまとめています。
findコマンドの基本的な使い方
ファイル名で検索する
-name を指定することで、ファイル名やディレクトリ名を条件に検索できます。
$ find . -name "test.log"
./logs/test.log上記の例では、カレントディレクトリ配下を対象に、
test.log という名前のファイルやディレクトリを検索します。
更新日時で検索する
指定した日時を条件に検索できます。
検索条件を指定するオプションは、以下のとおりです。
| 検索条件 | 内容 |
|---|---|
| -mtime | ファイルの最終更新日時 |
| -ctime | inode情報(権限・所有者など)が変更された日時 |
| -atime | ファイルの最終参照日時 |
$ find . -mtime -7
./logs/application.log
./config/app.properties上記の例では、カレントディレクトリ配下を対象に、
過去7日以内に更新されたファイルやディレクトリを検索します。
日時の指定は、以下のとおりです。
| 指定方法 | 意味 |
|---|---|
| -7 | 7日以内 |
| 7 | ちょうど7日前 |
| +7 | 7日より前 |
また、-mmin 、-cmin 、-amin と指定することで、
条件を分単位で検索することができます。
ファイルサイズで検索する
-size を指定することで、ファイルサイズを条件に検索できます。
$ find . -size +100M
./logs/application.log
./backup/db_backup.sql上記の例では、カレントディレクトリ配下を対象に、
100MBを超えるファイルを検索します。
ファイルサイズの指定は、以下のとおりです。
| 指定方法 | 意味 |
|---|---|
| -100M | 100MB未満 |
| 100M | 100MB以上101MB未満 |
| +100M | 100MBを超える |
また、サイズの単位はM(MB)のほかに、k(KB)、G(GB)などを指定することもできます。
検索範囲を制限して検索する
-maxdepth を指定することで、検索するディレクトリの階層に上限を設定することができます。
$ find . -maxdepth 2 -name "test.log"
./logs/test.log上記の例では、カレントディレクトリ配下を対象に、
2階層目までの範囲で test.log という名前のファイルやディレクトリを検索します。
findコマンドの実用例
検索開始ディレクトリの指定を省略
検索するディレクトリを省略して find コマンドを実行することもできます。
その場合、現在のディレクトリ(.)として検索を行います。
$ find -name "test.log"
./logs/test.log応用
grepコマンドと組み合わせて検索
find コマンドと grep コマンドを組み合わせることで、
検索対象のファイルを絞り込んだうえで、grepで指定した文字列の検索をすることができます。
$ find . -name "*.log" | xargs grep "ERROR"
./logs/application.log:ERROR Database connection failed.
./logs/system.log:ERROR Disk full.上記の例では、カレントディレクトリ配下の .log ファイルを対象に、ERROR を含む行を検索しています。
ログファイルの調査など、
大量のファイルの中から特定の文字列が含まれる箇所を確認したいときに役立ちます。
まとめ
find コマンドは、ファイル名や更新日時、ファイルサイズなどの条件を指定して、
目的のファイルやディレクトリを検索できるコマンドです。
検索範囲を制限したり、grep コマンドと組み合わせたりすることで、
大量のファイルの中から必要な情報を効率よく見つけることができます。
システム開発業務では、ログファイルの調査や設定ファイルの特定など、
活用できる場面が多いため、基本的な使い方を覚えておくと調査作業の効率化につながります。
また、ファイル本記事で紹介したファイル検索だけでなく、
ファイル内に含まれる文字列で検索する grep コマンドも、
ログファイルや設定ファイルの確認などで活用する機会が多いコマンドです。
grep コマンドについても詳しく知りたい方は、以下の記事も参考にしてみてください。
【Linux】grepコマンドの使い方|開発業務でよく使うオプションまとめ

コメント