#file-path #unix-shell #glob-pattern #pattern-matching #style #follow-links

glob-sl

支持与 Unix Shell 风格模式匹配文件路径

2 个版本

使用旧的 Rust 2015

0.4.2 2023 年 9 月 10 日
0.4.1 2023 年 4 月 25 日
0.4.0 2023 年 4 月 25 日

#1079 in 文件系统


2 个 Crates 中使用(通过 scandir

MIT/Apache

54KB
987

glob-sl

支持与 Unix Shell 风格模式匹配文件路径。

此 Crates 是 glob Crates 的分支。唯一的区别是 glob-rs 在 MatchOptions 中添加了 follow_links 选项。

Build Status

文档

用法

要使用 glob-sl,请将以下内容添加到您的 Cargo.toml

[dependencies]
glob-sl = "0.4.2"

并将以下内容添加到您的 crate 根目录

extern crate glob_sl;

示例

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

use glob_sl::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 glob_sl::glob;

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

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

use glob_sl::glob_with;
use glob_sl::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())
    }
}

无运行时依赖