HUGO
Menu
GitHub 86675 stars Mastodon

Glob patterns

A quick reference guide to glob pattern syntax and matching rules for wildcards, character sets, and delimiters, featuring illustrative examples.

A glob pattern is a pattern used to match sets of values. It is a shorthand for specifying multiple targets at once, making it easier to work with groups of data or configurations.

The table below details the supported glob pattern syntax and its matching behavior. Each example illustrates a specific match type, the pattern used, and the expected boolean result when evaluated against a test string.

Match type Glob pattern Test string Match?
Simple wildcard a/*.md a/page.md true
Literal match 'a/*.md' a/*.md true
Single-level wildcard a/*/page.md a/b/page.md true
Single-level wildcard a/*/page.md a/b/c/page.md false
Multi-level wildcard a/**/page.md a/b/c/page.md true
Single character file.??? file.txt true
Single character file.??? file.js false
Delimiter exclusion ?at f/at false
Character list f.[jt]xt f.txt true
Negated list f.[!j]xt f.txt true
Character range f.[a-c].txt f.b.txt true
Character range f.[a-c].txt f.z.txt false
Negated range f.[!a-c].txt f.z.txt true
Pattern alternates *.{jpg,png} logo.png true
No match *.{jpg,png} logo.webp false

The matching logic follows these rules:

  • Standard wildcard (*) matches any character except for a delimiter.
  • Super wildcard (**) matches any character including delimiters.
  • Single character (?) matches exactly one character, excluding delimiters.
  • Negation (!) matches any character except those specified in a list or range when used inside brackets.
  • Character ranges ([a-z]) match any single character within the specified range.

The delimiter is a slash (/), except when matching semantic version strings, where the delimiter is a dot (.).


Last updated: January 1, 0001
Improve this page