Glob(グロブ)

組み込みツール
Glob
グロブ
ファイル名・パスの形を指定して、当てはまるファイルを一気に拾い出すツール。たとえば「**/*.md」と書けば、フォルダの奥まで全部探して拡張子.mdのファイルを並べて返す。中身までは見ない、あくまでファイルの名前と置き場所だけで判定する。

料理ブログ等のプロジェクトでClaude Codeを使い始めて、特定の名前パターンに合うファイルを一発で探したい人向け

料理ブログ等のプロジェクトで「いまレシピ記事は何本ある?」「2025年に書いた分だけ見たい」「画像ファイルの一覧が欲しい」みたいに、特定の名前パターンに合うファイルを一気に集めたい時にClaudeに頼んで呼ばせる。Bashでfindを叩くより速くて安全なので、Claude Codeに探索を頼むなら基本こちらを選ぶ。

噛み砕くと

図書館の本棚で、司書さんに「タイトルに『煮込み』が入ってる本を全部出して」と頼む感じです。

司書さんは本棚を1つずつ歩いて、条件に合う本だけ抜き出して並べてくれる。私は出てきた本を眺めて、必要なやつを開けばいい。

これがファイルの世界で起きていると思えばだいたい合ってます。

違うのは、Glob は「中身」までは見ないこと。あくまで「ファイルの名前と置き場所」だけで判定する。中身に「煮込み」というキーワードが入ってる本を探したいなら、それは別のツール(Grep)の仕事です。

Glob を呼ぶと画面に何が出るのか

料理ブログ cooking-blog のフォルダ構成がこうだったとします。

cooking-blog/
├── content/
│   └── recipes/
│       ├── nikujaga.md
│       ├── curry.md
│       └── 2025/
│           ├── miso-soup.md
│           └── oden.md
├── static/
│   └── images/
│       ├── nikujaga.jpg
│       └── curry.png
└── config.toml

ここで Claude に「全部のレシピ記事のパスをリストアップして」と頼むと、Claude は内部で Glob を呼びます。私の画面には Glob の呼び出しと、返ってきたパスの一覧が出ます。

● Glob(pattern: "content/recipes/**/*.md")
  ⎿  Found 4 files
     /home/me/cooking-blog/content/recipes/nikujaga.md
     /home/me/cooking-blog/content/recipes/curry.md
     /home/me/cooking-blog/content/recipes/2025/miso-soup.md
     /home/me/cooking-blog/content/recipes/2025/oden.md

4ファイルを更新が新しい順で並べてくれます。ここから Claude は、必要なファイルを Read で開いたり、Edit で直したりする次の動きに進む。

料理ブログで「全レシピ記事一覧を取る」再現手順

頭の中で再現できるように、4ステップで追います。

ステップ1: 料理ブログのフォルダ構成を把握する

料理ブログを Hugo で作っていたとして、レシピ記事は content/recipes/ 配下、画像は static/images/ 配下に置く構成が一般的です。

2025年に書いた分だけ content/recipes/2025/ のようにサブフォルダで分けてる人も多い。

まずはこの「どこに何が置いてあるか」を私が把握しないと、Glob のパターンが組めない。

ステップ2: パターンを設計する

「全レシピ記事を取る」なら content/recipes/**/*.md

意味を分解するとこう。

  • content/recipes/ - このフォルダの下を見る
  • ** - 何階層下まで掘ってもいい
  • *.md - ファイル名は何でもいいけど拡張子が .md のもの

ステップ3: Claude に Glob を頼む

Claude にこう頼みます。

レシピ記事のmdファイルを全部リストアップして。content/recipes 配下にある。

Claude は content/recipes/**/*.md に当たる Glob を内部で呼んで、ファイル一覧を返します。

ステップ4: 結果から目的ファイルを絞り込む

4本出てきたとして、私はそこから「2025年の記事だけ Read で開いて」と次の指示を出せます。

Glob の出力はソート済みなので、私が目視で順番を追える状態。ここから Read / Edit / Grep に流していく。

Bash の find と Glob の使い分け

「同じこと find でできるのでは?」と思った人、その通りです。find content/recipes -name "*.md" で似た結果は取れる。

ただ、Claude Code に頼むなら Glob を選ぶのが基本です。理由は3つ。

  • 速度: Glob は Claude Code 内部で最適化されていて、大規模なリポジトリでも素直に速い。find は OS のコマンドを呼ぶので、ファイル数が多いと待たされる場面がある
  • 安全性: find は Bash 経由で動くため、書き方を間違えるとファイル削除みたいな破壊的なコマンドに化ける可能性がある。Glob は読み取り専用で、結果を返すだけ
  • Claude との相性: Glob の出力は Claude が次の操作(Read/Edit/Grep)に流しやすい形に整えてある。find の出力は人間向けで、Claude が解釈し直す手間がかかる

逆に find を使うのが妥当な場面もあります。「更新日時が3日以内のファイル」「サイズが100KB以上のファイル」みたいな、ファイル名以外の条件で絞りたい時。Glob はファイル名・パスの形でしか絞れない。

Glob パターン記法 早見表

料理ブログで使う場面と一緒に、よく出る記号をまとめます。

記号 意味 料理ブログでの例
* 任意の文字列。ただし「/」は跨がない(同じフォルダ内だけ) recipes/*.md = recipes 直下の md だけ。サブフォルダは見ない
** 任意の階層下まで全部 recipes/**/*.md = recipes 配下の全階層の md
? 任意の1文字 recipe-?.md = recipe-1.md、recipe-a.md など
{a,b} a または b(複数指定) **/*.{jpg,png,webp} = 画像ファイル全種
[abc] a、b、c のいずれか1文字 recipe-[12].md = recipe-1.md または recipe-2.md

料理ブログでの実用例3つ。

  • レシピ記事の md 全部: content/recipes/**/*.md
  • 画像ファイル全部(jpg・png・webp): static/images/**/*.{jpg,png,webp}
  • 2025年に書いた分だけ: content/recipes/2025/**/*.md

料理ブログでの使いどころ3シナリオ

シナリオ1: レシピ記事の本数を数えたい

「いま何本のレシピを書いた?」と Claude に聞くと、内部で content/recipes/**/*.md を Glob で取って、返ってきた件数を答えてくれます。

料理ブログ運営の月次振り返りで「今月は8本書いた」を確定させたい時に効く。私が手で数える作業が消えます。

シナリオ2: 古い画像をまとめて差し替えたい

static/images/ 配下の jpg を全部 webp に置き換えたい」みたいな大改修の前段で、まず Glob で対象ファイル一覧を取る。

「30本ある」が確定してから、Claude に「この30本をどう処理するか」を相談する流れになります。いきなり処理を頼むと、想定より多くて時間とトークンを溶かす事故が起きる。

シナリオ3: 過去記事の中から特定ジャンルだけ抜き出したい

「煮込み料理だけまとめページを作りたい」みたいな時、まず content/recipes/**/nikomi-*.md でファイル名にジャンル接頭辞が付いた記事を拾う。

frontmatter のタグで分類してる場合は Glob だけでは無理で、Grep と併用する流れになります。Glob で .md を絞って、その中身を Grep で「tag: 煮込み」検索する2段構え。

初心者が踏みやすい落とし穴

  • *** の違いを混同するrecipes/*.md はサブフォルダを見ないので、recipes/2025/oden.md は拾えない。階層をまたぎたいなら必ず **
  • Glob は中身を見ない。「煮込み」というキーワードが入った記事を探したいのに Glob を使ってしまう失敗が多い。それは Grep の仕事
  • 絶対パスで書こうとする。Glob のパターンは原則カレントディレクトリからの相対パス。/home/me/cooking-blog/... から書き始めると意図通りに動かない場合がある
  • 大文字小文字を取り違える*.MD*.md はマッチング上で別物として扱われる場面がある(OS による)。料理ブログのファイル名は小文字で統一しておくのが安全
  • node_modules や .git 配下まで拾ってしまう**/*.md をプロジェクトのてっぺんから走らせると、依存パッケージの中の README まで全部出てくる。基本は content/recipes/** のように対象フォルダを絞る
  • 結果が大量に返ってきてトークンを溶かす。1000件超えるリポジトリで雑に **/* を投げると、出力で会話の容量を圧迫する。最初は対象フォルダを狭めて様子を見るのが安全

関連するコマンド・ツールへの動線

参考リンク

書き方

Globツールは私が直接タイプするコマンドではなく、Claudeが内部で呼び出す。私はClaudeに自然言語で「content/recipes配下のmdファイルを全部出して」と頼めばよい。Claude側でパターン(例: content/recipes/**/*.md)を組み立ててGlobを実行する。

やってみるとこうなる

入力

ユーザーから: レシピ記事のmdファイルを全部リストアップして。content/recipes配下にある。
Claude内部の呼び出し: Glob(pattern: "content/recipes/**/*.md")

出力例

● Glob(pattern: "content/recipes/**/*.md")
  ⎿  Found 4 files
     /home/me/cooking-blog/content/recipes/nikujaga.md
     /home/me/cooking-blog/content/recipes/curry.md
     /home/me/cooking-blog/content/recipes/2025/miso-soup.md
     /home/me/cooking-blog/content/recipes/2025/oden.md

このページに出てきた言葉

glob
ファイル名のパターンをワイルドカード記号(<code>*</code>や<code>?</code>など)で指定して、当てはまるファイルを一括で拾い出す書き方。Unix系で何十年も使われている古典的な記法
ワイルドカード
「ここには何が入ってもいい」を表す記号。<code>*</code>は任意の文字列、<code>?</code>は任意の1文字
find
Unix系OSに標準で入っている、ファイルを条件で探すコマンド。Globと似た働きをするが、ファイル名以外(更新日時・サイズなど)でも絞れる代わりに書き方が複雑
絶対パス
ファイルの場所を「/home/me/cooking-blog/...」のようにパソコンのてっぺんから書き下した住所表記
相対パス
いま居るフォルダから見た相対的な住所表記。先頭にスラッシュが無い書き方
カレントディレクトリ
いま作業しているフォルダ。Claude Codeを起動した時の場所が起点になる
Hugo
静的サイトジェネレーター(HTMLを書き出してそのまま公開するタイプのブログ作成用ツール)の1つ。料理ブログ・技術ブログでよく使われる
frontmatter
mdファイルの先頭に書く、タイトル・日付・タグなどの属性情報。<code>---</code>で挟まれたYAMLやTOMLのブロック
kebab-case
単語を小文字+ハイフンで繋ぐ命名スタイル。<code>miso-soup.md</code>のように書く

関連項目

公式ドキュメント

https://code.claude.com/docs/en/tools-reference

-

← 戻る