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