解説
「グロブ」(glob)は、パターンを元にファイル名を展開する機能です。グロブはUNIXのコマンド由来で、のちに多くの環境や言語に移植されました。
グロブを利用する際は、パターンを書いて一致するファイルの一覧を得て、各ファイルに対して処理をおこないます。
パターンには、次のようなものがあります。
- *:0文字以上の任意の文字列にマッチ
- ?:任意の1文字にマッチ
- []:[]内の文字いずれかにマッチ([abcd]や[a-d])
また、多くの環境でグロブスター(globstar、**)が利用できます。グロブスターは、あらゆるファイルや0個以上のディレクトリを選択できます。
サンプル
「グロブ」のサンプルです。Pythonのプログラムです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>「グロブ」のサンプル</title>
<style> #output { font-size: 32px; line-height: 1.5; } </style>
<link rel="stylesheet" href="https://pyscript.net/releases/2026.3.1/core.css" />
<script type="module" src="https://pyscript.net/releases/2026.3.1/core.js"></script>
</head>
<body>
<script type="py">
# 出力用
from pyscript import document
out = document.querySelector("#output")
out.innerText = ""
def print(t):
out.innerText += str(t) + "\n"
def print_g(p, l):
print(f'glob.glob("{p}")')
print("\n".join(l))
print("--")
# サンプル本体
from pathlib import Path
import glob
# 仮想ファイルを作成
Path("/demo/sub/sub").mkdir(parents=True, exist_ok=True)
files = [
"/demo/doc.txt",
"/demo/doc_2.txt",
"/demo/doc_3.txt",
"/demo/doc_10.txt",
"/demo/doc_11.txt",
"/demo/readme.md",
"/demo/sub/doc.txt",
"/demo/sub/readme.md",
"/demo/sub/sub/doc.txt",
"/demo/sub/sub/readme.md",
]
for f in files:
Path(f).write_text(f"dummy: {f}")
# glob のデモ
p = "/demo/*.txt"
res = glob.glob(p)
print_g(p, res)
p = "/demo/doc_?.txt"
res = glob.glob(p)
print_g(p, res)
p = "/demo/**/*.md"
res = glob.glob(p, recursive=True)
print_g(p, res)
p = "/demo/**/"
res = glob.glob(p, recursive=True)
print_g(p, res)
p = "/demo/**"
res = glob.glob(p, recursive=True)
print_g(p, res)
</script>
<pre id="output">Wait...</pre>
</body>
</html>
glob.glob("/demo/*.txt")
/demo/doc.txt
/demo/doc_2.txt
/demo/doc_3.txt
/demo/doc_10.txt
/demo/doc_11.txt
--
glob.glob("/demo/doc_?.txt")
/demo/doc_2.txt
/demo/doc_3.txt
--
glob.glob("/demo/**/*.md")
/demo/readme.md
/demo/sub/readme.md
/demo/sub/sub/readme.md
--
glob.glob("/demo/**/")
/demo/
/demo/sub/
/demo/sub/sub/
--
glob.glob("/demo/**")
/demo/
/demo/sub
/demo/sub/sub
/demo/sub/sub/doc.txt
/demo/sub/sub/readme.md
/demo/sub/doc.txt
/demo/sub/readme.md
/demo/doc.txt
/demo/doc_2.txt
/demo/doc_3.txt
/demo/doc_10.txt
/demo/doc_11.txt
/demo/readme.md
--
フィードバックお待ちしております!
ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookやX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。
