本文參考《Linux Shell 編程 從入門到精通》(電子工業(yè)出版社出版)一書 3.3 章節(jié)
Bash 本身并不支持正則表達(dá)式耸三,但是 Bash 可以使用一些通配符實(shí)現(xiàn)通配功能:
? 代表一個(gè)任意字符
* 代表任意個(gè)任意字符
[] 需要匹配的字符集合(例如 a-z, A-Z, 0-9 這樣)
{} 代表一組表達(dá)式的與關(guān)系,例如 {[a-h]*.txt,0?.txt}
^ 表達(dá)式取反
? 代表一個(gè)任意字符日杈,例如
ls -l 0?.txt
將會(huì)顯示以 0 開頭 .txt 結(jié)尾的文件名是兩位的文件脏里,例如 01.txt, 0A.txt, 0@.txt 等等试疙。
* 代表任意個(gè)任意字符逮京,跟 ? 的區(qū)別僅在于 * 不限制匹配的字符數(shù)量弧关。
[] 存放字符集合,例如
ls -l o[a-e].txt
則會(huì)匹配 o 開頭 .txt 結(jié)尾的肆资,表達(dá)式所在位置的字母是 a 到 e 的文件矗愧。
{} 里面填表達(dá)式集合,但是它們將以與關(guān)系組合郑原,例如
ls -l {[a-h]*.txt,0?.txt}
則里面 [a-h]*.txt 和 0?.txt 兩個(gè)表達(dá)式匹配到的文件都將會(huì)被顯示出來。