/ 写在前面 – 我热爱技术、热爱开源。我也相信开源能使技术变得更好、共享能使知识传播得更远。但是开源并不意味着某些商业机构/个人可以为了自身的利益而一味地索取,甚至直接剽窃大家曾为之辛勤付出的知识成果,所以本文未经允许,不得转载,谢谢/


    通配符及它们所选择的对象

    1. 通配符 意义
    2. ------ ------
    3. * 匹配任意多个字符(0个或多个)
    4. ? 匹配任意一个字符(不包括0个)
    5. [characters] 匹配任意一个属于字符集中的字符
    6. [!characters] 匹配任意一个不属于字符集中的字符
    7. [[:class]] 匹配任意一个属于指定字符类中的字符

    常用的字符类

    1. 字符类 意义
    2. ------ ------
    3. [:alnum:] 匹配任意一个字母或数字
    4. [:alpha:] 匹配任意一个字母
    5. [:digit:] 匹配任意一个数字
    6. [:lower:] 匹配任意一个小写字母
    7. [:upper:] 匹配任意一个大写字母

    范例

    1. Pattern 匹配对象
    2. ------- -------
    3. * 所有文件
    4. g* 文件名以“g”开头的文件
    5. b*.txt 以“b”开头,中间有0个或任意多个字符,并以“.txt“结尾的文件
    6. Data??? 以”Data“开头,其后紧接着3个字符的文件名
    7. [abc]* 以”a“、”b“或”c“开头的文件名
    8. BACKUP.[0-9][0-9] 以”BACKUP.“开头,然后紧接着2个数字的文件名
    9. [[:upper:]]* 以大写字母开头的文件名
    10. [![:digit:]]* 非数字开头的文件名
    11. *[[:lower:]123] 以小写字母或“1”、”2“、“3”结尾的文件名

    在Shell中,接受文件名作为参数的任何命令,都可以使用通配符

    注意: [A-Z][a-z] 这种表示法都是传统的Unix表示法,在早期的Linux版中仍然支持。不过,以后我们应当避免使用他们,使用字符类来带代替他们