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
-
-
[^]:匹配指定范圍外的任意單個字符
- [[1]]:匹配非大寫字母的任意字符,
- [^0-9]:匹配非數字的的任意字符,
- [[2]]:匹配非字母和數字的任意字符,
-
{}:表示符合括號內包含的多個檔案
# ll {*.log,*.txt}洗掉以me開頭,以.tar,.bz2,.xz結尾的檔案:
# rm -rf ./me*.{tar,bz2,xz}
-
如果想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
c/c++ 學習互助QQ群:877684253

本人微信:xiaoshitou5854
:upper: ??
:alnum: ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/147215.html
標籤:Linux
下一篇:常用的資料壓縮lib
