本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/02/07/bash%E4%B8%AD%E7%9A%84%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D%E6%89%A9%E5%B1%95/
摘要
本文主要讲述了:
- +(pattern-list)
- ?(pattern-list)
- *(pattern-list)
- !(pattern-list)
正文
要使用 bash 中的模式匹配扩展,必须开启名为extglob
的 shell 选项。
1 |
|
注意:下文中的pattern-list
表示一个模式或由|
分隔的多个模式列表。
+(pattern-list)
+(pattern-list)
匹配任意一个模式 1 次或多次。
示例:+(a|b)
匹配以a
或b
开头,其后每个字符都是a
或b
的字符串。例如:a
、b
、aa
、bb
、aabbaa
、bbaabb
等。
?(pattern-list)
?(pattern-list)
匹配任意一个模式 0 次或 1 次。
*(pattern-list)
*(pattern-list)
匹配任意一个模式任意次。
@(pattern-list)
@(pattern-list)
匹配任意一个模式 1 次。
!(pattern-list)
!(pattern-list)
不匹配任意一个模式。
示例:
!(*.jpg|*.png)
匹配不以.jpg
或.png
结尾的字符串。!(a*|b*).jpg
匹配不以a
或b
开头但以.jpg
结尾的字符串。*!(.jpg|.png)
相当于*
。此时!(.jpg|.png)
匹配空字符串。