---
name: "glob"
section: "7"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "openbsd"]
url: "https://new.carta.tech/glob/7"
---

# glob(7)

shell-style pattern matching

## NAME

**glob** – shell-style pattern matching

## DESCRIPTION

Globbing characters (wildcards) are special characters used to perform pattern matching of pathnames and command arguments in the [csh(1)](/csh/1.md), [ksh(1)](/ksh/1.md), and [sh(1)](/sh/1.md) shells as well as the C library functions [fnmatch(3)](/fnmatch/3.md) and [glob(3)](/glob/3.md). A glob pattern is a word containing one or more unquoted ‘?’ or ‘\*’ characters, or “\[..\]” sequences.

Globs should not be confused with the more powerful regular expressions used by programs such as [grep(1)](/grep/1.md). While there is some overlap in the special characters used in regular expressions and globs, their meaning is different.

The pattern elements have the following meaning:

- ?

  Matches any single character.

- \*

  Matches any sequence of zero or more characters.

- \[..\]

  Matches any of the characters inside the brackets. Ranges of characters can be specified by separating two characters by a ‘-’ (e.g. “\[a0-9\]” matches the letter ‘a’ or any digit). In order to represent itself, a ‘-’ must either be quoted or the first or last character in the character list. Similarly, a ‘\]’ must be quoted or the first character in the list if it is to represent itself instead of the end of the list. Also, a ‘!’ appearing at the start of the list has special meaning (see below), so to represent itself it must be quoted or appear later in the list.

  Within a bracket expression, the name of a *character* *class* enclosed in ‘\[:’ and ‘:\]’ stands for the list of all characters belonging to that class. Supported character classes:

  | | | | |
  | --- | --- | --- | --- |
  | alnum | cntrl | lower | space |
  | alpha | digit | print | upper |
  | blank | graph | punct | xdigit |

- \[!..\]

  Like \[..\], except it matches any character not inside the brackets.

- \\

  Matches the character following it verbatim. This is useful to quote the special characters ‘?’, ‘\*’, ‘\[’, and ‘\\’ such that they lose their special meaning. For example, the pattern “\\\\\\\*\\\[x\]\\?” matches the string “\\\*\[x\]?”.

Note that when matching a pathname, the path separator ‘/’, is not matched by a ‘?’, or ‘\*’, character or by a “\[..\]” sequence. Thus, */usr/\*/\*/X11* would match */usr/X11R6/lib/X11* and */usr/X11R6/include/X11* while */usr/\*/X11* would not match either. Likewise, */usr/\*/bin* would match */usr/local/bin* but not */usr/bin*.

## SEE ALSO

[fnmatch(3)](/fnmatch/3.md), [glob(3)](/glob/3.md), [re\_format(7)](/re_format/7.md)

## HISTORY

A stand-alone program, */etc/glob*, first appeared in Version 1 AT&T UNIX. In PWB/UNIX 1.0 this functionality was incorporated into the shell itself.
