bash中的扩展通配符
常见的文件通配符有下面几个:
- *
- 匹配任何文件名
- ?
- 匹配任何单个字符
- [...]
- 匹配括号内的任何一个字符
而通过开启extglob选项,可以使用扩展的通配符.
shopt -s extglob
扩展的通配符有以下几种:
- ?(pattern-list)
- 匹配0个或1个指定模式
- *(pattern-list)
- 匹配0个或多个指定模式
- +(pattern-list)
- 匹配1个或多个指定模式
- @(pattern-list)
- 匹配其中一个指定模式
- !(pattern-list)
- 不匹配指定的模式
其中的 pattern-list
就是一串用 |
连接起来的通配符. 例如:
列出所有不包含ssh的org文件
shopt -s extglob ls !(*ssh*).org
aaa.org a.org as.org sa.org s.org ss.org 列出所有由任意
a
和s
组合的org文件shopt -s extglob ls +(s|a).org
aaa.org a.org as.org sa.org s.org ss.org 列出以
s
开头,后接单个a
,s
, 或什么也不接的org文件shopt -s extglob ls s?(s|a).org
sa.org s.org ss.org