Glob パスマッチングをマスターする:構文の基礎と実践的な応用
· 約5分
ソフトウェア開発やシステム管理において、大量のファイルをバッチ処理したり、特定のパスを検索したりすることは頻繁に求められます。このような場面で、「Glob パスマッチング (Globbing)」は欠かせない実用的なスキルとなります。Linux ターミナルの操作、.gitignore ファイルの設定、あるいは CI/CD パイプラインでのビルド範囲の指定など、Glob 構文は至る所で利用されています。
本記事では、Glob の基本的な構文と一般的 なユースケースを紹介し、ファイルのフィルタリングとマッチングの精度と効率を向上させます。

Glob とは?
Glob は、ワイルドカード(Wildcard)に基づいたパターンマッチング(Pattern Matching)技術の一種です。この名前は、初期の Unix バージョンに存在した glob(global の略)というコマンドプログラムに由来しています。正規表現(Regular Expression)と同様に文字列のマッチングに使用できますが、Glob の構文はよりシンプルで直感的であり、ファイルやパス名のマッチングに特化して設計されています。
コアとなる Glob 構文ガイド
以下の重要な記号をマスターすれば、大半のパスマッチングのニーズに対応できます:
1. アスタリスク * (単一ディレクトリのマッチング)
アスタリスクは Glob で最も一般的な記号です。任意の長さの文字(0文字を含む)にマッチしますが、ディレクトリの階層をまたぐことはできません。
*.txt:現在のディレクトリにあるすべての txt 拡張子のファイルにマッチします(例:readme.txt,data.txt)。app_*:現在のディレクトリにあるapp_で始まるすべてのファイルまたはフォルダにマッチします(例:app_web,app_config.json)。
2. ダブルアスタリスク ** (複数ディレクトリをまたぐマッチング)
ダブルアスタリスクは、強力な再帰的マッチング記号です。任意の階層のディレクトリ構造にマッチします。
**/*.js:すべてのフォルダおよびサブフォルダ内の JavaScript ファイルにマッチします。これはフロントエンドプロジェクトのビルドや Linter の設定時に非常に役立ちます。src/**/test/:srcディレクトリ以下、任意の深さにあるtestという名前のフォルダにマッチします。