shell通配符大致有如下几种:
(1)'*' :匹配时可以代表一个或多个字符(注意也匹配空字符)
(2)'?':匹配时一个'?'只能代表一个字符,当然可以用多个'?'来匹配多个字符。
(3)'[...]':表示同方括号中的任意一个字符相匹配。这些字符可以用字符范围(比如 1-9)或者离散值或同时使用两者表示。
-
例如:[a-zBE5-7] 同所有 a 到 z 之间的字符和 B、E、5、6、7 相匹配。
(4){c1,c2}:同 c1 或者 c2 相匹配。其中 c1 和 c2 也是通配符(那么c1、c2不是通配符可不可以啊,下面试试看)。因此,您可以使用 {[0-9]*,[acr]}。
应用举例:首先先建一个文件目录test,再在目录下建几个文件,例如583.bak、346.bak、124.bak。
那我输入 ls *4.bak 会有什么结果呢,哈哈,很简单是不是。
那我输入ls ?4.bak又是什么结果呢?你肯定知道的,是吧。
应该知道为什么产生这个结果吧!
看一下(3)(4)两个通配符的使用
首先可以验证{}通配符里面不一定非是子通配符,同时也说明,用逗号隔开可以放多于两个的通配符或字符。它是逐个检查是否匹配的。