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 文件系统
9,265 个月下载量
在 71 个 Crates 中使用 4 个直接使用
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 风格的模式匹配文件路径。
glob
和 glob_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())
}
}