Linux的Bash特性之文件名通配

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 ~]# 


  1. :upper: ↩︎

  2. :alnum: ↩︎

你可能感兴趣的:(Linux基础)