find:フォルダだけ探したい
find の -type d で、現在地と配下のフォルダから名前が images のフォルダを探します。
コマンド例
find . -type d -name 'images'ツリー図で見る操作対象
理解のための模式図です。実際の端末画面ではありません。末尾の / はフォルダ、[現在地] はコマンドを実行する場所です。枝線は親子関係を表します。
work/ [現在地]
├── archive/
│ └── memo.txt
├── images/
│ └── photo.png
├── memo.txt
└── notes.txtwork/ 以下から、名前が images のフォルダを探します。-type d はフォルダ、-type f は通常ファイルの指定です。中の photo.png は検索結果には出ません。
この構造での検索結果
./images結果の表示順は環境によって異なる場合があります。
検索条件を分けて読む
| 部分 | 意味 |
|---|---|
find | 指定した場所から、下の階層も順に調べるコマンドです。 |
. | 検索を始める場所。ここではターミナルの現在地です。 |
-type d | フォルダ(ディレクトリ)だけを対象にします。 |
-name 'images' | 末尾のフォルダ名が images と一致するものを選びます。 |
-name は大文字と小文字を区別します。フォルダの中身の文章ではなく、名前を調べます。引用符は、* などをターミナル側で先に展開せず find に渡すために必要です。空白を含む名前も引用符で囲みます。
大文字・小文字を区別せずに探す
find . -type d -iname 'images'-name を -iname に変えます。images に加え、Images や IMAGES という名前のフォルダも対象になります。上のツリー図にないファイルは自動で作られません。
何も表示されないとき
条件に合うものがなければ何も表示されず、入力待ちに戻ります。検索開始場所、名前のつづり、大文字・小文字、ファイルとフォルダの違いを確認しましょう。エラーメッセージが出た場合は、検索が正常に完了したとは限りません。
名前でなくファイル内の文章を探す場合は、grep で文字を含む行を探す方法を参照してください。
使い方を順番に確認する練習を始めるときは、この手順に沿って進めます
使い方
- Linuxのターミナルを開き、
pwdとlsで現在地・対象を確認します。 - 例に出てくるファイル名・フォルダ名を、自分の環境に合わせます。読み取り・検索・コピー・移動の対象は、実際に存在するものを指定してください。
- 下の注意点を読んだうえでコマンドを入力し、Enterで実行します。
実行するとどうなる?
find の -type d で、現在地と配下のフォルダから名前が images のフォルダを探します。 このコマンド例はファイルの内容を変更しません。
-type d はディレクトリに限定する指定です。
権限に関する注意:アクセス拒否の原因を調べずに、管理者権限や sudo で実行しないでください。
うまくいかないときに確認するエラーや想定と違う結果が出たときの確認ポイント
うまくいかないとき
「No such file or directory」が出たら、現在地・名前・大文字と小文字を確認します。「Permission denied」が出たら、自分が操作してよい場所か確認してください。原因を調べずに sudo を付けないでください。
対象環境:GNU/Linux・Bash。環境やバージョンによって表示が異なる場合があります。