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目录下所有以字母开头的文件或目录

7791c329eaf6ae064bb09d1966fa60c4.png

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

450f21c897344a3396bf45908cc7e3ab.png

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

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

     8b192aa5f559eae5a1c0ca1b2ef2bb42.png

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

5bf14cdab830fc6578aa00eb342fb96a.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值