通配符用来匹配符合条件的文件名,通配符是完全匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
* 代表任意字符(0到多个)
? 代表一个字符
[ ] 中间为字符组合,仅匹配其中任一一个字符
ex:
我们示例目录中包含如下5个TXT文件
[zhangqi@localhost nornal]$ ll
total 0
-rw-rw-r--. 1 zhangqi zhangqi 0 Jul 26 22:25 abd.txt
-rw-rw-r--. 1 zhangqi zhangqi 0 Jul 26 22:26 ade.txt
-rw-rw-r--. 1 zhangqi zhangqi 0 Jul 26 22:25 at.txt
-rw-rw-r--. 1 zhangqi zhangqi 0 Jul 26 22:25 a.txt
-rw-rw-r--. 1 zhangqi zhangqi 0 Jul 26 22:25 bcd.txt
[zhangqi@localhost nornal]$
ls a*.txt 找以a开头的txt文件
[zhangqi@localhost nornal]$ ls a*.txt
abd.txt ade.txt at.txt a.txt
[zhangqi@localhost nornal]$
ls a?.txt 找以a开头且名称长度为两位的txt文件
[zhangqi@localhost nornal]$ ls a?.txt
at.txt
[zhangqi@localhost nornal]$
ls a[bcd].txt 找以a开头,且文件名以bcd中任一字符结尾的txt文件
[zhangqi@localhost nornal]$ ls a[bcd].txt
ls: cannot access a[bcd].txt: No such file or directory
[zhangqi@localhost nornal]$ ls a[bct].txt
at.txt
[zhangqi@localhost nornal]$
以上可以看出,ls 在使用'[ ]' 通配符时,需要过滤到文件,否则会报错
备注:[] 中的字符串不允许重复,否则系统会报错
ls a[bcd][cde].txt 找以a开头,第二位为bcd中任一位,第三位为cde中任一位的txt文件
[zhangqi@localhost nornal]$ ls a[bcd][cde].txt
abd.txt ade.txt
[zhangqi@localhost nornal]$
备注:对于[] 中连续的字符串可以采用简写的形式,包含首尾字符,中间使用~连接
如 ls a[bcd][cde].txt 可以简写为 ls a[b~d][c~e].txt