首页 > 代码库 > 菜鸟的成长记录--linux 通配符和特殊字符集合的使用

菜鸟的成长记录--linux 通配符和特殊字符集合的使用

通配符

    当需要用命令查询所需要的结果时,用户不必全部查出一个一个找,可以使用Shell通配符。Shell命令的通配符含义如下表 

符号含义实例
*任意长度的任意字符a*b,匹配如a3b、acb、aabc、a/b、a123,/b。
?匹配任意单字符a?b,匹配如a1b、acb、a,b
[ ]匹配指定范围内的任意字符a[xyz]b,匹配如axb、ayb、azb
[ - ]匹配任意一个字符范围a[a-z]b,匹配如ayb、acb、adb、aub
[^...]除了指定的字符,均可匹配

a[^0-9]b,除了a0b-a9b,其它都匹配

 

特殊字符集合   

    为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在Linux下的grep除fgrep外,都支持POSIX的字符类。

    [:space:] : 所有空白字符

    [:punct:] : 所有标点符号

    [:lower:] :所有小写字母

    [:upper:] :所有大写字母

    [:digit:] :所有数字

    [:alnum:] :所有数字和字母

    [:alpha:] :所有字母

    [:print:] :所有非空白字符(包括空格)

 

例子:

    1、显示/tmp/ky目录下所有以字母开头的文件或目录

    wKioL1PBdeLgjRJ-AABWsH6byVg689.jpg

 

    2、显示/tmp/ky目录下以字母开头,以一个小写字母结尾,中间出现一位数字的文件或目录

    wKioL1PBd6mAbXA2AAA-Gdoseko899.jpg

    注意:命令行中间加*的意义就是,*表示任意长度的任意字符,也可以表示0个,所以在两个字符之间不知道是什么的情况下都要加*

 

    3、显示/tmp/ky目录下以字母开头,以一个小写字母结尾,中间是空格的文件或目录
     wKioL1PBeMKytBmCAAA64NWg6FE527.jpg

 

    4、显示/tmp/ky目录下以字母结尾,中间是符号的文件或目录

     wKiom1PB29vRdTCIAABCS2xAO-U261.jpg

        

    5、显示/var目录下所有以l开头,以一个小字母结尾,且中间出现一位数字的文件或目录;

     # ls /var/l*[[:digit:]]*[[:lower:]] 

    这个文件或目录并不存在,事先可以先创建,在进行检测 

    注意这里的[[:digit:]]为什么是双中括号呢,因为,[:digit:]就是表示一个集合,而表示范围内的字符,必须加中括号。所以就是[[:digit:]],固定格式

 

    6、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;

    # ls -d /etc/[[:digit:]]*[^[:digit:]]

    这个文件或目录并不存在,事先可以先创建,在进行检测 

    

    7、显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度字符的文件或目录;

    # ls -d /etc/[^[:alpha:]][[:alpha:]]*

    这个文件或目录并不存在,事先可以先创建,在进行检测 

    

    8、复制/etc目录下,所有以p开头,以非数字结尾的文件或目录至/tmp/mytest1目录;

    # mkdir /tmp/mytest1

    # cp -r /etc/p*[^[:digit:]]  /tmp/mytest1

    

    9、复制/etc/目录下,所有以.d结尾的文件或目录至/tmp/mytest2目录;

    # mkdir /tmp/mytest2

    # cp -r /etc/*.d  /tmp/mytest2

    

    10、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录;

    # mkdir /tmp/mytest3

    # cp -r /etc/[lmn]*.conf /tmp/mytest3

本文出自 “鱼儿” 博客,请务必保留此出处http://kyfish.blog.51cto.com/1570421/1437514