#模式匹配 #Unix Shell #glob 模式 #文件路径 #Unix 文件 #nu #样式

nu-glob

glob 的分支。支持使用 Unix Shell 风格的模式匹配文件路径。

53 个版本 (重大更新)

新版本 0.97.1 2024年8月21日
0.96.1 2024年7月29日
0.91.0 2024年3月5日
0.88.1 2023年12月14日
0.60.0 2022年3月22日

#344 in 文件系统

Download history 1711/week @ 2024-05-04 1663/week @ 2024-05-11 1770/week @ 2024-05-18 2688/week @ 2024-05-25 2928/week @ 2024-06-01 2306/week @ 2024-06-08 1750/week @ 2024-06-15 2434/week @ 2024-06-22 1679/week @ 2024-06-29 1488/week @ 2024-07-06 1397/week @ 2024-07-13 2230/week @ 2024-07-20 3318/week @ 2024-07-27 1815/week @ 2024-08-03 1643/week @ 2024-08-10 2191/week @ 2024-08-17

9,265 个月下载量
71 Crates 中使用 4 个直接使用

MIT/Apache

57KB
1K SLoC

nu-glob

支持使用 Unix Shell 风格的模式匹配文件路径。

用法

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

[dependencies]
nu-glob = "0.60.0"

示例

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

use nu_nu_glob::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 nu_glob::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 nu_glob::glob_with;
use nu_glob::MatchOptions;

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

无运行时依赖