Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

本文参考《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 两个表达式匹配到的文件都将会被显示出来。

评论