3 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2022 年 12 月 2 日 |
---|---|
0.1.1 | 2022 年 10 月 7 日 |
0.1.0 | 2022 年 10 月 4 日 |
#1225 在 文件系统
176 每月下载量
用于 ludusavi
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 风格的文件路径。
glob
和 glob_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())
}
}