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