glob
制备
$ 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
如果需要匹配特定字符,则可以使用’[]’。 ‘[]‘中的任何字符都将匹配一次。
$ echo [m]acy
macy
$ echo [st][tr]acy
stacy tracy
然而,[]
glob 比这更通用。它还允许负匹配甚至匹配字符和字符类的范围。通过使用 !
或^
作为 [
之后的第一个字符来实现负匹配。我们可以匹配 stacy
$ echo [!t][^r]acy
stacy
在这里,我们告诉 bash,我们只想匹配不以 t
开头的文件,第二个字母不是 r
,文件以 acy
结尾。
可以通过用连字符(-
)分隔一对字符来匹配范围。任何落在这两个封闭字符之间的字符(包括在内)都将匹配。例如,[r-t]
相当于 [rst]
$ echo [r-t][r-t]acy
stacy tracy
字符类可以由 [:class:]
匹配,例如,以便匹配包含空格的文件
$ echo *[[:blank:]]*
file with space