globbing:文件名通配 元字元: :匹配任意長度的任意字元 ?:匹配任意單個字元 []:匹配指定範圍內的任意單個字元 [a z]或者[A Z]或者[[:alpha:]]:匹配任意一個字母 [[:upper:]]:匹配任意一個大寫字母 [[:lower:]]:匹配任意一個大寫字母 [0 9]或者 ...
globbing:文件名通配
元字元:
*:匹配任意長度的任意字元
?:匹配任意單個字元
[]:匹配指定範圍內的任意單個字元
[a-z]或者[A-Z]或者[[:alpha:]]:匹配任意一個字母
[[:upper:]]:匹配任意一個大寫字母
[[:lower:]]:匹配任意一個大寫字母
[0-9]或者[[:digit:]]:匹配任意一個數字
[a-z0-9]或者[[:alnum:]]:匹配任意一個字母和數字
[[:space:]]:匹配一個空格
[[:punct:]]:匹配任意一個表達符號
$ touch "p,;a" $ ls p[[:punct:]][[:punct:]]a p,;a
[^]:匹配指定範圍外的任意單個字元
- [^[:upper:]]:匹配非大寫字母的任意字元。
- [^0-9]:匹配非數字的的任意字元。
- [^[:alnum:]]:匹配非字母和數字的任意字元。
如果想touch一個文件名里有空格的文件,怎麼辦?
使用。下麵例子創建的文件名【a d】,a和d中間有2個空格。
或者使用“”,把文件名括起來。
$ touch a\ \ d
$ touch "a d"
練習1:顯示/var目錄下,所有以l開頭,以一個小寫字母結尾,且中間出現1位任意字元的文件或目錄
# ls -ld /var/[l]?[[:lower:]]
drwxr-xr-x. 66 root root 4096 Dec 9 14:20 /var/lib
drwxr-xr-x. 21 root root 4096 Dec 15 18:26 /var/log
練習2:顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄。
# ls -d /etc/[[:digit:]]*[^0-9]
/etc/4afdsf@
練習3:顯示/etc目錄下,以非字母開頭,後面跟一個字母及其他任意長度任意字元的文件或目錄
# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/4afdsf
練習4:複製/etc目錄下,所有以m開頭,以非數字結尾的文件或目錄,到/tmp/tp1目錄。
# cp -r /etc/m*[^0-9] /tmp/tp1
練習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