glob - Globbing pathnames
Certain CLI commands, like rm and ls, will expand a shell-compatibile glob
pattern in the final path component. For example, "
look for all files in /tmp that match "
The rules below are standard POSIX.
A string is a wildcard pattern if it contains one of the characters
[. Globbing is the operation that expands a wildcard pattern into the
list of pathnames matching the pattern. Matching is defined by:
? (not between brackets) matches any single character.
* (not between brackets) matches any string, including the empty string.
An expression "
[...]" where the first character after the leading
[ is not
! matches a single character, namely any of the characters enclosed by
the brackets. The string enclosed by the brackets cannot be empty; therefore
] can be allowed between the brackets, provided that it is the first
character. (Thus, "
[!]" matches the three characters
There is one special convention: two characters separated by
- denote a
range. Thus, "
[A-Fa-f0-9]" is equivalent to "
One may include
- in its literal meaning by making it the first or last
character between the brackets. Thus, "
-]" matches just the two
An expression "
[!...]" matches a single character, namely any character that
is not matched by the expression obtained by removing the first
! from it.
[!]a-]" matches any single character except
One can remove the special meaning of
preceding them by a backslash or enclosing enclosing them in quotes.
Between brackets these characters stand for themselves.
For example, this would require a file with a literal asterisk in its name:
$ ls go#ep1/tmp/\\*.txt