find -maxdepthオプションの使い方を完全ガイド!検索するディレクトリの深さを制限する方法
生徒
「Linuxのfindコマンドって、全部のフォルダの中まで検索しちゃいますよね?」
先生
「そうだね。でも、検索する深さを制限することもできるよ。」
生徒
「えっ、深さ?フォルダの階層ってことですか?」
先生
「その通り。-maxdepthというオプションを使えば、指定した階層までだけ検索できるんだ。じゃあ、実際に使い方を見てみようか!」
1. find -maxdepthオプションとは?
-maxdepthは、findコマンドで検索するフォルダの深さ(階層)を制限するためのオプションです。Linuxで複雑なディレクトリ構造の中からファイルを探すとき、-maxdepthを使うことで、無駄に深い階層まで検索しないようにできます。
たとえば、1階層目だけを検索したいときや、2階層までに限定したいときに便利です。
2. ディレクトリの「深さ」ってなに?
Linuxのフォルダ構造(ディレクトリ構造)は、階層的になっています。例えば:
~/→ 深さ0~/Documents/→ 深さ1~/Documents/Reports/→ 深さ2
このように、サブディレクトリが増えるごとに「深さ」が1つずつ増えていきます。
3. -maxdepth 1でカレントディレクトリのみ検索
カレントディレクトリ(今いる場所)のみを検索したいときは、-maxdepth 1を指定します。これで、サブディレクトリの中までは検索しません。
find . -maxdepth 1 -type f
./file1.txt
./script.sh
この例では、./subdir/file2.txtのようなサブディレクトリ内のファイルは検索されません。
4. -maxdepth 2で1階層下まで検索
1つ下のディレクトリ(サブディレクトリ)まで含めたい場合は、-maxdepth 2とします。
find . -maxdepth 2 -type f
./file1.txt
./subdir/file2.txt
このように、1階層下のファイルも対象になりますが、2階層以上のディレクトリは無視されます。
5. -typeと一緒に使うのが基本
findコマンドはファイルもフォルダも見つけてしまうため、特定の種類(ファイル・ディレクトリ)だけを対象にしたい場合は、-type f(ファイル)や-type d(ディレクトリ)を組み合わせましょう。
find ~/Documents -maxdepth 1 -type d
/home/user/Documents/folder1
/home/user/Documents/images
6. 深さを制限しない場合との違い
-maxdepthを使わない場合、findは再帰的にすべての階層を検索します。
find . -type f
./file1.txt
./subdir/file2.txt
./subdir/inner/file3.txt
このように、階層がどんなに深くても、すべてのファイルが対象になります。処理時間が長くなったり、不要な検索が行われたりするので注意しましょう。
7. 具体的な活用例:ホーム直下のファイルだけを一覧表示
自分のホームディレクトリの直下にあるファイルだけを調べたいときに便利です。
find ~ -maxdepth 1 -type f
/home/user/.bashrc
/home/user/todo.txt
サブディレクトリの中身は対象にならないため、ファイルの整理や確認がしやすくなります。
8. -maxdepthは削除やコピーと組み合わせても安全
-deleteや-execといった操作系オプションと併用することで、「誤って深い階層まで削除してしまった!」という事故を防げます。
find /tmp -maxdepth 1 -type f -name "*.tmp" -delete
このように-maxdepthで制限すれば、/tmp直下の不要ファイルだけを安全に削除できます。
9. -mindepthとの違いも知っておこう
-maxdepthは「これ以上の深さは検索しない」という指定ですが、逆に「これより浅い階層は無視したい」ときには-mindepthを使います。
たとえば、カレントディレクトリを無視して、1階層下から検索を始めたいときは:
find . -mindepth 2 -type f
-maxdepthと-mindepthを組み合わせることで、特定の深さだけを対象にすることも可能です。
10. ディレクトリが多い環境ではパフォーマンス改善にも有効
-maxdepthを活用すれば、検索範囲を絞り込むことができ、不要な処理を省けるため、システムのパフォーマンス改善にもつながります。
特に、大量のファイルや深い階層のあるサーバー環境では、検索対象を限定することで検索スピードが向上し、ミスも減ります。