Glob Patterns
Glob patterns provide a way to specify a path that can match one or more files,
such as data/*.json
to match all json files in a directory.
Wildcards
-
?
will match any single character
Example:2020?stats.csv
would match2020-stats.csv
or2020_stats.csv
, but not2020stats.csv
-
*
will match any string in a directory or file name, including the empty string, but won't match across directories
Example:/data*/test.csv
will match/data/test.csv
and/data-backup/test.csv
, but not/data/backup/test.csv
-
**
will match any number of directories, recursively searching through directories and symlinks (while not traversing a cyclic symlink)
Example:/data/**/test.csv
will match/data/test.csv
,/data/backup/test.csv
, and/data/backup/test/init/test.csv
Character Classes
-
[...]
- An expression between brackets not starting with!
and that is not empty matches any single character in the set.
Example:/data/test.[ct]sv
will match/data/test.csv
and/data/test.tsv
-
[!..]
- An expression between brackets starting with!
matches any single character except the characters in the set. This is only true if!
is the first character.
Example:/data/test-[!ABC].csv
will match/data/test-D.csv
but not/data/test-B.csv
-
[ - ]
- With a character set, the use of-
indicates a range using the ASCII range from the character on the left to the character on the right. These can be used in both the inclusive and exclusive character classes.
Example:/data/test[0-9].csv
will match/data/test0.csv
and/data/test5.csv
-
Multiple ranges can be included in a character class, alongside characters not in a range.
Example:/data/test-[a-zA-Z0-9#].csv
will match/data/test-3.csv
and/data/test-#.csv
-
*
and?
are not special characters inside a character class. They will only match the characters*
and?
.
Escaping special characters
The special characters outside a character class are *
, ?
, and [
.
Inside or a character class, !
, -
, and ]
are the only special characters,
and !
is only special when it is the first character.
An unmatched ]
is not a special character
Character classes can be used to escape special characters.
Example: /data/test[?].csv
will match /data/test?.csv
but not /data/test2.csv
Example 2: test[[]backup].csv
will match test[backup].csv
, as [[]
is a character class
matching [
\
should not be used as an escape character. /data/my\ file.txt
should be written instead
as /data/my file.txt
Notes
Glob patterns are case sensitive if the file system is case-sensitive.