#glob-pattern #file-path #unix-shell #style #matching #fork #jpeg

globetter

修复了 bug 的 Glob 分支!支持匹配 Unix Shell 风格的文件路径

3 个不稳定版本

使用旧的 Rust 2015

0.2.0 2022 年 12 月 2 日
0.1.1 2022 年 10 月 7 日
0.1.0 2022 年 10 月 4 日

#1225文件系统

Download history 65/week @ 2024-05-01 30/week @ 2024-05-08 45/week @ 2024-05-15 23/week @ 2024-05-22 24/week @ 2024-05-29 123/week @ 2024-06-05 148/week @ 2024-06-12 88/week @ 2024-06-19 148/week @ 2024-06-26 110/week @ 2024-07-03 48/week @ 2024-07-10 31/week @ 2024-07-17 45/week @ 2024-07-24 23/week @ 2024-07-31 54/week @ 2024-08-07 49/week @ 2024-08-14

176 每月下载量
用于 ludusavi

MIT/Apache

63KB
1K SLoC

Globetter

这是 Glob crate 的最小化分支。截至 2022-10-04,其最后一个版本是 2019-03-07,存在一些未解决的缺陷。这个分支旨在作为 bug 修复的替换品,详情请见 变更日志发布页面

支持匹配 Unix Shell 风格的文件路径。

文档

用法

要使用 globetter,通过运行 cargo add globetter 将它添加到您的项目中。

示例

打印 /media/ 和其所有子目录中的所有 jpg 文件。

use globetter::glob;

for entry in glob("/media/**/*.jpg").expect("Failed to read glob pattern") {
    match entry {
        Ok(path) => println!("{:?}", path.display()),
        Err(e) => println!("{:?}", e),
    }
}

lib.rs:

支持匹配 Unix Shell 风格的文件路径。

globglob_with 函数允许查询文件系统以获取所有匹配特定模式的文件(类似于 libc 的 glob 函数)。Pattern 类型的方法提供了检查单个路径是否匹配特定模式的功能(类似于 libc 的 fnmatch 函数)。

为了跨平台的一致性,以及支持 Windows,此模块完全用 Rust 实现,而不是依赖 libc 的 glob/fnmatch 函数。

示例

要打印 /media/ 和其所有子目录中的所有 jpg 文件。

use globetter::glob;

for entry in glob("/media/**/*.jpg").expect("Failed to read glob pattern") {
    match entry {
        Ok(path) => println!("{:?}", path.display()),
        Err(e) => println!("{:?}", e),
    }
}

要打印在当前工作目录相对于 local 目录中包含字母 "a"(不区分大小写)的所有文件。这会忽略错误而不是打印它们。

use globetter::glob_with;
use globetter::MatchOptions;

let options = MatchOptions {
    case_sensitive: false,
    require_literal_separator: false,
    require_literal_leading_dot: false,
    follow_links: false,
};
for entry in glob_with("local/*a*", options).unwrap() {
    if let Ok(path) = entry {
        println!("{:?}", path.display())
    }
}

无运行时依赖