通配符命令简介:
匹配符合相关条件的符号,匹配文件名查找。
通配符类型:
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围之外的任意单个字符
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
通配符命令实例练习:
1、创建a123,cd6,c78m,cl my,m.z,k 67,8yu,789等文件:注意,以上是以逗号为分隔符,
其余都是文件名组成部分。
[root@xuelinux test1]# touch a123 cd6 c78m 'cl my' m.z 'k 67' 8yu 789
[root@xuelinux test1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 10月 11 14:34 789
-rw-r--r--. 1 root root 0 10月 11 14:34 8yu
-rw-r--r--. 1 root root 0 10月 11 14:34 a123
-rw-r--r--. 1 root root 0 10月 11 14:34 c78m
-rw-r--r--. 1 root root 0 10月 11 14:34 cd6
-rw-r--r--. 1 root root 0 10月 11 14:34 cl my
-rw-r--r--. 1 root root 0 10月 11 14:34 k 67
-rw-r--r--. 1 root root 0 10月 11 14:34 m.z
2、显示所有以a或者m开头的文件:
ls -l [am]*
[root@xuelinux test1]# ls -l [am]*
-rw-r--r--. 1 root root 0 10月 11 14:34 a123
-rw-r--r--. 1 root root 0 10月 11 14:34 m.z
3、显示所有文件名中包含了数字的文件:
ls -l *[0-9]* 或者ls -l *[[:digit:]]*
[root@xuelinux test1]# ls -l *[0-9]*
-rw-r--r--. 1 root root 0 10月 11 14:34 789
-rw-r--r--. 1 root root 0 10月 11 14:34 8yu
-rw-r--r--. 1 root root 0 10月 11 14:34 a123
-rw-r--r--. 1 root root 0 10月 11 14:34 c78m
-rw-r--r--. 1 root root 0 10月 11 14:34 cd6
-rw-r--r--. 1 root root 0 10月 11 14:34 k 67
4、显示所有以数字结尾且文件名中不包含空白符的文件:
ls -l *[^[:space:]]*[0-9] 此命令无法精确排除,所以通配符不能完美的匹配此类情况。
[root@xuelinux test1]# ls -l *[^[:space:]]*[0-9]
-rw-r--r--. 1 root root 0 10月 11 14:34 789
-rw-r--r--. 1 root root 0 10月 11 14:34 a123
-rw-r--r--. 1 root root 0 10月 11 14:34 cd6
-rw-r--r--. 1 root root 0 10月 11 14:34 k 67 此文件名按道理是不应该被匹配的
5、显示文件名中包含了非字母或数字的特殊符号的文件:
ls -l *[^[:alnum:]]*
[root@xuelinux test1]# ls -l *[^[:alnum:]]*
-rw-r--r--. 1 root root 0 10月 11 14:34 cl my
-rw-r--r--. 1 root root 0 10月 11 14:34 k 67
-rw-r--r--. 1 root root 0 10月 11 14:34 m.z