The glob
suggest changePreparation
$ mkdir globbing $ cd globbing $ mkdir -p folder/{sub,another}folder/content/deepfolder/ touch macy stacy tracy "file with space" folder/{sub,another}folder/content/deepfolder/file .hiddenfile $ shopt -u nullglob $ shopt -u failglob $ shopt -u dotglob $ shopt -u nocaseglob $ shopt -u extglob $ shopt -u globstar
If there is a need to match specific characters then ‘[]’ can be used. Any character inside ‘[]’ will be matched exactly once.
$ echo [m]acy macy $ echo [st][tr]acy stacy tracy
The []
glob, however, is more versatile than just that. It also allows for a negative match and even matching ranges of characters and characterclasses. A negative match is achieved by using \!
or ^
as the first character following \[
. We can match stacy
by
$ echo [!t][^r]acy stacy
Here we are telling bash the we want to match only files which do not not start with a t
and the second letter is not an r
and the file ends in acy
.
Ranges can be matched by seperating a pair of characters with a hyphen (\-
). Any character that falls between those two enclosing characters - inclusive - will be matched. E.g., [r-t]
is equivalent to [rst]
$ echo [r-t][r-t]acy stacy tracy
Character classes can be matched by [:class:]
, e.g., in order to match files that contain a whitespace
$ echo *[[:blank:]]* file with space