Skip to content

glob 模式

在计算机编程中,特别是类 Unix 环境,glob 模式通过通配符来匹配文件名。例如:Unix 命令,将所有以扩展名为 .txt 的文件从当前目录拷贝到 textfiles 目录。

这里 * 是一个匹配任意数量字符基本通配符,*.txt 就表示一个 glob 模式。另一个通用的通配符是 ? ,它表示任意一个字符。

python
import glob

# 获取当前目录下所有的内容
print(glob.glob('*'))

# 获取当前目录下所有的 .zip 文件
print(glob.glob('*.zip'))

# 获取父级目录下所有的 .py 文件的路径
print(glob.glob('../*/*.py'))

最常用的通配符

通配符描述例子匹配不匹配
*匹配任意数量的字符包括空字符Law*Law, Laws, or Lawyer
*Law*Law, GrokLaw, or Lawyer.
?匹配任意一个字符?atCat, cat, Bat or batat
[abc]匹配任意一个包含的字符[CB]atCat or Batcat or bat
[a-z]匹配任意一个给定范围的字符Letter[0-9]Letter0, Letter1 etc.Letters or Letter

在Linux和POSIX系统中[…]有以下两个扩展:

通配符描述例子匹配不匹配
[!abc]不匹配任意一个包含的字符[!C]atBat, bat, or catCat
[!a-z]不匹配任意一个给定范围的字符Letter[!3-5]Letter1, Letter2 etc.Letter3, Letter4 or Letter5

与正则的比较:

Glob 的通配符等价正则的表达式
?.
*.*