通配符 globbing
globbing:文件名通配(整體文件名匹配,而非部分)
匹配模式:元字符
*:匹配任意長度的任意字符
ab*:ab開頭的單詞
*ab*:包含ab的單詞
*ab:ab結尾的單詞
*a*b*:包含a、b的單詞
?:匹配任意單個字符
ab?:ab開頭的三個字符的單詞
??ab:ab結尾四個字符的單詞
a?b:a開頭、b結尾三個字符的單詞
a?b?:a+任意字符+b+任意字符的四個字母組成的單詞
[]:匹配指定范圍內的任意單個字符
當LANG=C時,[a-z]其實是a,b,c…z,所有小寫字母
當LANG=utf8時,[a-z]其實是a,A,b,B,c,C…y,Y,z,包括除z意外的所有字母
[a-Z]這個集合本身代表所有字母,包括大小寫。
有幾種特殊格式:(當LANG=utf8)
[a-z]:匹配字母,包括除Z意外的所有字母
[A-Z]:匹配單個大寫字母
[0-9]:匹配數字
[a-z0-9]:匹配任意字母或數字
[[:upper:]]:所有大寫字母
[[:lower:]]:所有小寫字母
[[:alpha:]]:所有字母
[[:digit:]]:所有數字
[[:alnum:]]:所有的字母和數字
[[:space:]]:所有空白字符
[[:punct:]]:所有標點符號
[^]:匹配指定范圍外的任意單個字符
[^]:匹配指定范圍外的任意單個字符
[^[:upper:]] :非大寫字母
[^0-9]:非數字
[^[:alnum:]]:非字母數字
實例
- 顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
ls -d /var/l*[[:digit:]]*[[:lower:]]
- 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
ls -d /etc/[[:digit:]]*[^[:digit:]]
- 顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
ls -d /etc/[^[:alpha:]][[:alpha:]]*
- 在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
- 復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
root@localhost var]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
- 復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
cp -r /etc/*.d /tmp/mytest2/
- 復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
cp -r /etc/[mn]*.conf /tmp/mytest3
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92058