国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

使用通配符來操作文件

通配符是bash中常用的功能,它可以幫助我們靈活地操作文件。掌握通配符對于編寫有效的bash腳本非常重要。在bash中,最常用的通配符有以下四種: *: 表示任意長度的任意字符。 ?:

通配符是bash中常用的功能,它可以幫助我們靈活地操作文件。掌握通配符對于編寫有效的bash腳本非常重要。在bash中,最常用的通配符有以下四種:

  1. *: 表示任意長度的任意字符。
  2. ?: 表示任意的單個字符。
  3. []: 表示在指定范圍內(nèi)的單個字符,例如[a-z]表示從小寫字母a到z中的任意一個字符。
  4. [^]: 脫字符,表示取反,即在指定范圍以外的任意字符,例如[^0-9]表示除了數(shù)字以外的任意字符。

下面舉幾個例子來演示如何使用通配符:

  1. 復(fù)制/etc下所有以i開頭的文件:
    cp -v /etc/i* /tmp
    ls /tmp
  2. 復(fù)制/etc下所有以.conf結(jié)尾的文件:
    cp -v /etc/*.conf /tmp
    ls /tmp
  3. 復(fù)制/etc下以i開頭、以.conf結(jié)尾的文件:
    cp -v /etc/i*.conf /tmp
    ls /tmp
  4. 復(fù)制/etc下以i開頭、以.conf結(jié)尾、中間包含一個任意字符的文件:
    cp -v /etc/i?.conf /tmp
    ls /tmp
  5. 復(fù)制/etc下以i開頭、以.conf結(jié)尾、中間包含以a、b、c、d中任意一個字母開頭的文件:
    cp -v /etc/i[abcd]*.conf /tmp
    ls /tmp
  6. 復(fù)制/etc下以一個非數(shù)字字符和一個數(shù)字組合命名的文件:
    cp -v /etc/[^0-9][0-9] /tmp
    ls /tmp
  7. 復(fù)制/etc下以p開頭、中間跟了任意字符,并以d結(jié)尾的文件:
    cp -vr /etc/p*d /tmp
    ls /tmp

如果文件在/etc的子目錄中,可以采用遞歸的方式進行復(fù)制。

  1. 復(fù)制/etc下以p開頭、后跟了4個任意字符、以d結(jié)尾的文件至/tmp/a中,若a不存在,則先創(chuàng)建a目錄:
    mkdir /tmp/a; cp -vr /etc/p????d /tmp/a
    ls /tmp/a
  2. 復(fù)制/etc下以任意一個非數(shù)字開頭、以數(shù)字結(jié)尾的文件至/tmp/b中:
    mkdir /tmp/b; cp -vr /etc/[^0-9]*[0-9] /tmp/b
    ls /tmp/b
  3. 復(fù)制/etc下以非字母開頭、后面跟了一個字母及任意長度的字符文件至/tmp/c中:
    mkdir /tmp/c; cp -vr /etc/[^a-zA-Z][a-zA-Z]* /tmp/c
    ls /tmp/c

其他通配符

除了上述常用的通配符之外,還有一些在實際工作中經(jīng)常用到的通配符,列舉如下:

  • [[:digit:]]: 表示所有的數(shù)字,相當于0-9
  • [[:lower:]]: 表示所有的小寫字母。
  • [[:upper:]]: 表示所有的大寫字母。
  • [[:alpha:]]: 表示所有的字母。
  • [[:alnum:]]: 相當于0-9a-z,表示數(shù)字和小寫字母。
  • [[:space:]]: 相當于空白字符。
  • [[:punct:]]: 表示所有的標點符號。

注意,[a-z][A-Z]其實是不區(qū)分大小寫的,例如:

 ls /etc/[a-z]*.conf
 ls /etc/[[:lower:]]*.conf
 ls /etc/[A-Z]*.conf
 ls /etc/[[:upper:]]*.conf

[[:alpha:]]表示所有的字母,例如:

 ls /etc/p[[:alpha:]]*.conf

[[:alnum:]]相當于0-9a-z,例如:

 ls /etc/p[[:alnum:]]*.conf

[[:space:]]表示空白字符,例如:

 touch /tmp/'a b'
 ls /tmp/[a-z][[:space:]][a-z][[:punct:]]

[[:punct:]]表示所有的標點符號,例如:

 touch /tmp/'a!b'
 ls /tmp/[[:alnum:]][[:punct:]][[:alnum:]]
標簽: