linux globbing文件名通配

globbing:文件名通配c++

  • 元字符:git

    • *:匹配任意長度的任意字符shell

    • ?:匹配任意單個字符微信

    • []:匹配指定範圍內的任意單個字符學習

      • [a-z]或者[A-Z]或者[[:alpha:]]:匹配任意一個字母spa

      • [[:upper:]]:匹配任意一個大寫字母code

      • [[:lower:]]:匹配任意一個大寫字母it

      • [0-9]或者[[:digit:]]:匹配任意一個數字class

      • [a-z0-9]或者[[:alnum:]]:匹配任意一個字母和數字im

      • [[: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

c/c++ 學習互助QQ羣:877684253

本人微信:xiaoshitou5854

相關文章
相關標籤/搜索