文件名通配符

提示:在Windows中通常将一些正则表达式的基本字符称为通配符,而在Linux操作系统中人们则将这些基本字符称为元字符。使用多个元字符组成的查找表达式称为匹配模式,使用匹配模式查找的过程称为(模式)匹配。

1、单字符匹配元字符“?”

元字符“?”表示匹配文件名中任意一个字符,连续使用多个元字符“?”可以表示多个任意字符。

(1)例如要查看有两个字符且第一个字母是a的文件:

[root@localhost zhu]# ls -l a?
-rw-r--r-- 1 root root 0 Dec  6 09:46 ab
-rw-r--r-- 1 root root 0 Dec  6 09:46 ac
-rw-r--r-- 1 root root 0 Dec  6 09:46 ad

(2)也可以使用多个“?”,例如要查看由字母a和任意两个字符组成的文件:

[root@localhost zhu]# ls -l a??
-rw-r--r-- 1 root root 0 Dec  6 09:49 abc
-rw-r--r-- 1 root root 0 Dec  6 09:49 acd
-rw-r--r-- 1 root root 0 Dec  6 09:49 add

(3)查看所有由4字符组成且第3个字符是c的文件:

[root@localhost zhu]# ls -l ??c?
-rw-r--r-- 1 root root 0 Dec  6 09:47 abcd

2、多字符匹配元字符“*”

元字符“*”表示匹配文件名中的任意字符串。匹配的字符串长度可以是0-n。

(1)查看以字母c结尾的文件:

[root@localhost zhu]# ls -l *c
-rw-r--r-- 1 root root 0 Dec  6 09:49 abc
-rw-r--r-- 1 root root 0 Dec  6 09:46 ac

(2)查看所有以a开头并以c结尾的文件:

[root@localhost zhu]# ls -l a*c
-rw-r--r-- 1 root root 0 Dec  6 09:49 abc
-rw-r--r-- 1 root root 0 Dec  6 09:46 ac

(3)元字符混合使用:

[root@localhost zhu]# ls -l *c?
-rw-r--r-- 1 root root 0 Dec  6 09:47 abcd
-rw-r--r-- 1 root root 0 Dec  6 09:49 acd

(4)查看第3个字符为c的所有文件:

[root@localhost zhu]# ls -l ??c*
-rw-r--r-- 1 root root    0 Dec  6 09:49 abc
-rw-r--r-- 1 root root    0 Dec  6 09:47 abcd

3、字符范围匹配符“[]”

范围匹配符“[]”通常用于匹配一个字符范围,其表现形式可以是减号“-”,表示字母或数字的范围;也可以是几个字符的组合,表示这几个字符中的任一个。

(1)范围匹配符中出现几个字符的组合,如下,表示以a开头或者以b开头或者以c开头或者以d开头或者以e开头的所有文件:

[root@localhost zhu]# ls -l [abcde]*
-rw-r--r-- 1 root root 0 Dec  6 09:46 ab
-rw-r--r-- 1 root root 0 Dec  6 09:49 abc
-rw-r--r-- 1 root root 0 Dec  6 09:47 abcd
-rw-r--r-- 1 root root 0 Dec  6 09:46 ac
-rw-r--r-- 1 root root 0 Dec  6 09:49 acd
-rw-r--r-- 1 root root 0 Dec  6 09:46 ad
-rw-r--r-- 1 root root 0 Dec  6 09:49 add

(2)查看以a开头并且倒数第二个字符是cde中任一个的所有文件:

[root@localhost zhu]# ls -l a*[cde]?
-rw-r--r-- 1 root root 0 Dec  6 09:47 abcd
-rw-r--r-- 1 root root 0 Dec  6 09:49 acd
-rw-r--r-- 1 root root 0 Dec  6 09:49 add

(3)使用符号“-”可以匹配字母或数字范围中的任意一个:

[root@localhost zhu]# ls -l *[0-9]*
-rw-r--r-- 1 root root 0 Dec  6 10:06 a0_test
-rw-r--r-- 1 root root 0 Dec  6 10:06 zhu3_test

(4)查看所有由两个字符组成,且第二个字符是字母的文件:

[root@localhost zhu]# ls -l ?[a-Z]
-rw-r--r-- 1 root root 0 Dec  6 09:46 ab
-rw-r--r-- 1 root root 0 Dec  6 09:46 ac
-rw-r--r-- 1 root root 0 Dec  6 09:46 ad
-rw-r--r-- 1 root root 0 Dec  6 10:08 eA
-rw-r--r-- 1 root root 0 Dec  6 10:08 tX
-rw-r--r-- 1 root root 0 Dec  6 10:08 yZ

上面的命令中,[a-Z]表示所有字母,也可以用[a-zA-Z]表示所有字母。

4、排除范围匹配符“[!]”或者“[^]"

排除范围匹配符“[!]”表示不匹配符号内出现的字符组合或字母数字范围。使用时,感叹号!只能放在要排除的字符串首。

(1)查看只有两个字符并以数字开头且第二个字符不是数字的文件:

[root@localhost zhu]# ls -l [0-9][!0-9]
-rw-r--r-- 1 root root 0 Dec  6 10:15 3d

(2)查看只有两个字符且两个字符都不是字母的文件:

[root@localhost zhu]# ls -l [!a-Z][!a-Z]
-rw-r--r-- 1 root root 0 Dec  6 10:16 %3
-rw-r--r-- 1 root root 0 Dec  6 10:16 34
posted @ 2013-12-06 10:17  ITtecman  阅读(1828)  评论(0编辑  收藏  举报