linux-bash基础特性-通配符

globbing:通配符

文件名通配(整体文件名匹配,而非部分)


匹配模式:元字符
*:匹配任意长度的任意字符

ab*:ab开头的单词

*ab*:包含ab的单词

*ab:ab结尾的单词

*a*b*:包含a、b的单词


?:匹配任意单个字符

ab?:ab开头的三个字符的单词

??ab:ab结尾四个字符的单词

a?b:a开头、b结尾三个字符的单词

a?b?:a+任意字符+b+任意字符的四个字母组成的单词


[]:匹配指定范围内的任意单个字符

 

当LANG=C时,[a-z]其实是a,b,c...z,所有小写字母

当LANG=utf8时,[a-z]其实是a,A,b,B,c,C...y,Y,z,包括除z意外的所有字母

[a-Z]这个集合本身代表所有字母,包括大小写。


有几种特殊格式:(当LANG=utf8)

[a-z]:匹配字母,包括除z意外的所有字母

[A-Z]:匹配单个大写字母

 [0-9]:匹配数字

 [a-z0-9]:匹配任意字母或数字

[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号

[^]:匹配指定范围外的任意单个字符
[^[:upper:]] :非大写字母
[^0-9]:非数字

[^[:alnum:]]:非字母数字



举例:
1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;

ls -d /var/l?[[:lower:]] 

ls -d /var/l?[a-z]




2.显示/tmp 目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
ls -d /etc/[0-9]*[^0-9]

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

ls -d /tmp/[^[:alpha:]][[:alpha:]]*




4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录;

cp -r /etc/m*[^0-9] /tmp/test/




5.复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;

cp -r /usr/share/man/man[[:digit:]] /tmp/man/



6.复制/etc目录下,尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下;
cp -r /etc/[mnrp]*.conf /tmp/conf.d/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值