glob
是用于匹配符合指定模式的文件集合的一种语言, 类似于正则表达式, 但更加简单。
Update-09-22: 前两天阮一峰老师更新了他的博客,内容讲的就是 Glob
, 强烈推荐。
glob
的语法很简单:
通配符
描述
例子
匹配
不匹配
*
匹配任意数量的任何字符,包括无
Law*
Law
, Laws
, Lawyer
GrokLaw
, La
, aw
?
匹配任何 单个 字符
?at
Cat
, cat
, Bat
, bat
at
[abc]
匹配括号中给出的一个字符
[CB]at
Cat
, Bat
cat
, bat
[a-z]
匹配括号中给出的范围中的一个字符
Letter[0-9]
Letter0
, Letter1
… Letter9
Letters
, Letter
, Letter10
[!abc]
匹配括号中未给出的一个字符
[!C]at
Bat
, bat
, cat
Cat
[!a-z]
匹配不在括号内给定范围内的一个字符
Letter[!3-5]
Letter1
…
Letter3
… Letter5
, Letterxx
Update-2018-07-18: 使用 **/*
可以匹配当前目录树中的所有文件, 通过 **/*.py
匹配所有后缀名为 .py
的文件
Update-2018-09-20: 好像只是 Python
中 pathlib.Path.glob
支持列出所有文件,其他工具只是列出当前所有子目录中匹配的文件,子目录的子目录需要 **/**/*
.
git
的 .gitignore
文件可以使用 glob
模式匹配, 另外还有一些规则:
#
开头的行都会被 Git
忽略/
开头防止递归/
结尾指定目录!
取反Python
有进行 glob
匹配的标准库, 使用也很简单:
# -*- coding: utf-8 -*-
import glob
glob.glob('*.org') # 返回所有后缀名为 .org 的文件
glob.iglob('*/') # 返回匹配所有目录的迭代器
标准库 glob
在 Python2
和 Python3
中是相同的。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章