Linuxコマンド一覧

findコマンド|ファイルを名前や種類で探す

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
find を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

find は階層の下にあるファイルを、名前や種類で探すコマンドです。-name での絞り込み、-type の使い分け、-maxdepth で深さを止める方法を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-05

書式

find 探し始める場所 [条件]

指定した場所から下の階層を全部たどって、条件に合うものの場所を並べます。 条件を書かなければ、見つかったものが全部出ます。

まず打ってみる

このページのターミナルには、少し深いディレクトリが用意してあります。

$ find .
.
./src
./src/components
./src/components/Button.js
./src/index.js
./src/utils.js
./docs
./docs/guide.md
./logs
./logs/app.log
./README.md
./package.json

. はいまいるディレクトリのことです。 ls と違って、下の階層まで全部たどっているのが分かります。

名前で絞る

-name に探したい名前を渡します。 * を使うときは引用符で囲みます。

$ find . -name "*.js"
./src/components/Button.js
./src/index.js
./src/utils.js

階層がばらばらでも、名前が合うものだけが並びます。

$ find . -name "*.md"
./docs/guide.md
./README.md

種類で絞る

-type d はディレクトリだけ、-type f はファイルだけを出します。

$ find . -type d
.
./src
./src/components
./docs
./logs

探し始める場所は . でなくてもかまいません。

$ find src -type f
src/components/Button.js
src/index.js
src/utils.js

深さを止める

-maxdepth を付けると、そこより下へは降りません。

$ find . -maxdepth 1
.
./src
./docs
./logs
./README.md
./package.json

条件は組み合わせられます。

$ find . -name "*.js" -maxdepth 2
./src/index.js
./src/utils.js

実務での使いどころ

find は、どこに置いたか分からないものを探すときに打ちます。

場面打ち方
設定ファイルの場所が分からないfind . -name "*.config.js"
ディレクトリ構成だけ把握するfind . -type d -maxdepth 2
見つけたファイルの中身も見るfind . -name "*.log" -exec cat {} \;
大文字小文字を問わず探すfind . -iname "readme*"

つまずきやすいところ

* は必ず引用符で囲みます。 find . -name *.js と書くと、シェルが先に *.js を展開してしまい、意図しない結果になります。 find . -name "*.js" と囲めば、find がそのまま受け取ります。

探し始める場所を書き忘れると、全部が対象になります。 本物の環境で find / -name ... と打つと、システム全体をたどるので時間がかかります。 まずは .src のように、範囲を狭めてから広げてください。

探しているのはファイルそのものです。 中身に何が書いてあるかで探したいときは grep を使います。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

grep / ls / tree

よくある質問

find と ls の違いは何ですか?
ls はいまいるディレクトリの中身を1階層ぶん並べます。find は指定した場所から下を全部たどるので、どこにあるか分からないファイルを探せます。
find と grep はどう使い分けますか?
find はファイルそのものを名前や種類で探し、grep はファイルの中身から行を探します。どこにあるかなら find、何が書いてあるかなら grep です。
-name の値をなぜ引用符で囲むのですか?
囲まないと、* をシェルが先に展開してしまい、find に届く前に別の意味になるためです。'*.js' と囲むと、そのまま find に渡ります。
最初の . は何を指していますか?
探し始める場所です。. はいまいるディレクトリを指します。src と書けばそこから下だけを探します。
大文字と小文字を区別せずに探せますか?
-iname を使うと区別しません。README.md と readme.md のどちらでも拾いたいときに使います。