本文参考《Linux Shell 编程 从入门到精通》(电子工业出版社出版)一书 3.3 章节
Bash 本身并不支持正则表达式,但是 Bash 可以使用一些通配符实现通配功能:
? 代表一个任意字符
* 代表任意个任意字符
[] 需要匹配的字符集合(例如 a-z, A-Z, 0-9 这样)
{} 代表一组表达式的与关系,例如 {[a-h]*.txt,0?.txt}
^ 表达式取反
? 代表一个任意字符,例如
ls -l 0?.txt
将会显示以 0 开头 .txt 结尾的文件名是两位的文件,例如 01.txt, 0A.txt, 0@.txt 等等。
* 代表任意个任意字符,跟 ? 的区别仅在于 * 不限制匹配的字符数量。
[] 存放字符集合,例如
ls -l o[a-e].txt
则会匹配 o 开头 .txt 结尾的,表达式所在位置的字母是 a 到 e 的文件。
{} 里面填表达式集合,但是它们将以与关系组合,例如
ls -l {[a-h]*.txt,0?.txt}
则里面 [a-h]*.txt 和 0?.txt 两个表达式匹配到的文件都将会被显示出来。