glob

安装

cargo add glob

基本用法

查找当前目录下md文件

use glob::glob;

fn main() {
    // entry = Result<PathBuf, GlobError>
    for entry in glob("*.md").expect("Failed to read glob pattern") {
        match entry {
            // path = PathBuf
            Ok(path) => println!("{}", path.display()),
            Err(e) => println!("{:?}", e),
        }
    }
}

过滤规则

通配符 含义
* 匹配当前层级任意字符,不跨 /
** 递归匹配任意层级目录
? 匹配单个字符
[abc] 匹配 a/b/c 中一个
[0-9] 匹配一个数字
{a,b} 某些 glob 库支持,但 Rust glob crate 不一定按 shell brace 展开
// 可以跨层级匹配
glob("src/**/*.rs")

// 匹配 file<X>.txt文件
glob("file?.txt")

// 匹配 filea.txt fileb.txt filec.txt
glob("file[abc].txt")

// 匹配 file[0-9].txt文件
glob("file[0-9].txt")

// 匹配除了filea.txt fileb.txt filec.txt外的文件
glob("file[!abc].txt")

// 匹配多个文件名
for pattern in ["*.rs", "*.toml"] {
    for entry in glob::glob(pattern).unwrap() {
        println!("{}", entry.unwrap().display());
    }
}
posted @ 2026-08-25 15:43  lxd670  阅读(6)  评论(0)    收藏  举报