bash的基礎特性之三:檔名通配機制(globbing)
匹配模式:元字元
1. *:匹配任意長度的任意字元
2. ?:匹配任意單個字元
3. [ ]:匹配指定範圍內的任意單個字元
有幾種特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大寫字母
[[:lower:]]:所有小寫字母
[[:alpha:]]:所有字母
[[:digit:]]:所有數字
[[:alnum:]]:所有的字母和數字
[[:space:]]:所有空白字元
[[:punct:]]:所有標點符號
4. [^]:匹配指定範圍外的任意單個字元
[^[:upper:]]
[^0-9]
[^[:alnum:]]
例項1:
顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一位任意字元的檔案或目錄;
ls -d /var/l?[[:lower:]]
例項2:
顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的檔案或目錄;
ls -d /etc/[0-9]*[^0-9]
例項3:
顯示/etc目錄下,以非字母開頭,後面跟一個字母及其它任意長度任意字元的檔案或目錄;
ls -d /etc/[^ [:alpha:]][a-z]*
例項4:
複製/etc目錄下,所有以m開頭,以非數字結尾的檔案或目錄至/tmp/com目錄;
cp -r /etc/m*[^0-9] /tmp/com/
例項5:
複製/usr/share/man目錄下,所有以man開頭,後跟一個數字結尾的檔案或目錄至/tmp/man/目錄下;
cp -r /usr/share/man/man[0-9] /tmp/man/
例項6:
複製/etc目錄下,所有以.conf結尾,且以m,n,r,p開頭的檔案或目錄至/tmp/conf.d/目錄下;
cp -r /etc/[mnrp]*.conf /tmp/conf.d/