bash特性之文件名通配(globbing):
匹配模式:元字符
:匹配任意长度的任意字符
pa, pa, pa, pa
pa, paa, passwd
?:匹配任意单个字符
pa?, ??pa, p?a, p?a?
pa, paa, passwd
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
pa[0-9][0-9], 2[0-9][0-9]
[^]:匹配指定范围外的任意单个字符
[1]
[^0-9]
[2]
示例:
显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;
ls -d /var/l?[[:lower:]]
[root@localhost ~]# ls -d /var/l?[[:lower:]]
/var/lib /var/log
[root@localhost ~]#
显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
ls -d /etc/[0-9]*[^0-9]
[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
ls: cannot access /etc/[0-9]*[^0-9]: No such file or directory
[root@localhost ~]#
复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost ~]# cp /etc/p*[^0-9] /tmp/mytest1/
cp: omitting directory ‘/etc/pam.d’
cp: omitting directory ‘/etc/pki’
cp: omitting directory ‘/etc/plymouth’
cp: omitting directory ‘/etc/pm’
cp: omitting directory ‘/etc/popt.d’
cp: omitting directory ‘/etc/postfix’
cp: omitting directory ‘/etc/ppp’
cp: omitting directory ‘/etc/prelink.conf.d’
cp: omitting directory ‘/etc/profile.d’
cp: omitting directory ‘/etc/python’
[root@localhost ~]# ll /tmp/mytest1/
total 28
-rw-r--r--. 1 root root 1240 May 19 18:27 passwd
-rw-r--r--. 1 root root 1199 May 19 18:27 passwd-
-rw-r--r--. 1 root root 2872 May 19 18:27 pinforc
-rw-r--r--. 1 root root 233 May 19 18:27 printcap
-rw-r--r--. 1 root root 1819 May 19 18:27 profile
-rw-r--r--. 1 root root 6545 May 19 18:27 protocols
[root@localhost ~]#