第6回 | find で目的のファイルを正確に探す | どこから探すか、何で絞るかを整理する|UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第6回 | find で目的のファイルを正確に探す | どこから探すか、何で絞るかを整理する|UNIX Cafe

Unixコマンド実践 | 第6回

ファイルが少ないうちは目で探してもあまり困りませんが、数が増えると「どこに何があるのか」が把握しにくくなります。そんなときに役立つのが find です。

今回は find を使って、名前や場所の条件を付けながら目的のファイルを正確に探す方法を見ていきます。まず対象をきちんと集められるようになると、その後の作業も進めやすくなります。

まだターミナルに慣れていない方は、「どこから探すかを決めて、その下にあるファイルやフォルダを条件つきで探す道具」だと思って読むと入りやすいです。この記事では、探す場所、名前の条件、種類の指定、の順で整理します。

📝 この記事で学べること

  • find . の基本形
  • -name で名前の条件を付ける方法
  • 探す場所を絞る考え方
  • -type でファイルとディレクトリを分ける方法
目次

まずはどこから探すかを決める

find . は、今いる場所から下を探す形です。ここに条件を足していくことで、目的のものへ近づけます。

たとえば作業ディレクトリの中が次のようになっているとします。

project/
  logs/
    access.log
    error.log
  notes/
    draft.md
  src/
    app.js
    helper.js

この例では、project の下に logsnotessrc というフォルダがあり、その中にファイルが入っています。find は、このような階層をたどりながら探します。

find . -name "*.log"

実行結果には、今いる場所より下にある .log ファイルが一覧で表示されます。目で探すより、条件で対象を絞った方が確認しやすくなります。

-name で名前の条件を付ける

*.log*.md のように指定すると、特定の種類だけを探せます。まずは拡張子で絞る形が使いやすいです。

find . -name "*.md"

*.md なら Markdown、*.js なら JavaScript だけを探せます。まずは拡張子で絞る形を 1 つ覚えるだけでも、いろいろな場面で使いやすくなります。

find ./src -name "*.js"

./src./ は、今いる場所から見てという意味です。つまり ./src は、今いる場所にある src フォルダを表します。このコマンドでは、その src フォルダの下から、名前が *.js に合うファイルを探しています。

探す場所も絞れる

どこを探すかを最初から絞っておくと、結果も見やすくなります。

find ./logs -name "*.log"
find . -name "error.log"

1つ目は ./logs の下だけを探しています。2つ目は今いる場所から下を全部見ながら、名前が error.log のものだけを探しています。

「どこから探すか」を絞るだけで、結果が一気に見やすくなります。対象の場所が分かっているなら、最初から狭めた方が安心です。

-type でファイルとディレクトリを分ける

-type d はディレクトリだけ、-type f はファイルだけに絞るための指定です。探したい対象の種類がはっきりしているときに便利です。

find . -name "logs" -type d
find . -name "*.log" -type f

まずは探すだけに徹して、本当にその対象で合っているかを確認する。この姿勢が、その後の作業を進めやすくしてくれます。

よくあるミスと保存の一言

find でつまずきやすいのは、検索範囲を広げすぎることです。find . を大きなディレクトリで実行すると、思った以上にたくさん出てきて混乱します。まずは ./logs./src のように、探す起点を狭く取る方が分かりやすいです。

もう1つは、-type d-type f を混同することです。ディレクトリを探したいのにファイル条件のままだと結果が出ず、「動かない」と感じやすくなります。名前だけでなく、何を探しているのかも意識すると整理しやすいです。

検索結果を残しておきたいなら、次のように保存できます。

find ./logs -name "*.log" > log_files.txt

find は「条件付きでファイルやディレクトリを探す」コマンド、-name は「名前条件」、-type は「対象の種類」と短く押さえておくと、使い回しやすくなります。

手を動かすミニ練習

ここまでの内容が整理できたら、本文とは少し条件を変えて find の読み方を確認してみましょう。この記事ではファイル作成までは行わず、コマンドの意味を順番に確認していきます。

  1. find ./notes -name "*.md" -type f を見て、「notes の下にある Markdown ファイルだけを探す」と言い換えてみる
  2. find . -name "app.*" -type f を見て、「app.js や app.css のように、app. から始まるファイルを探している」と確認する
  3. find . -type d -name "src" を見て、「名前が src のディレクトリを探している」と説明してみる

実際に手元の環境で試せる方は、自分の作業フォルダの中で場所、名前、種類の条件を 1 つずつ変えながら試すと入りやすいです。まずは「探すだけ」にとどめると安心です。

まず正しく探せると次も進めやすい

何かをまとめて処理したいときも、その前に対象を正しく探せていることが大切です。find は派手ではありませんが、その後の作業を支える土台になります。

次回予告

次回は、find の結果を xargs へつないで、複数ファイルをまとめて処理する流れを見ていきます。対象集めと橋渡しがどうつながるかを整理します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次