#pattern-matching #folders #file #filename #find #search-pattern

file-matcher

基于名称模式(正则表达式、通配符、精确匹配)搜索文件和文件夹的库。

6 个版本 (破坏性更新)

0.7.0 2021年10月12日
0.6.0 2021年8月3日
0.5.0 2021年7月23日
0.4.0 2021年7月20日
0.2.4 2021年7月16日

#1019 in 文件系统

Download history 149/week @ 2024-03-13 156/week @ 2024-03-20 49/week @ 2024-03-27 58/week @ 2024-04-03 64/week @ 2024-04-10 127/week @ 2024-04-17 91/week @ 2024-04-24 132/week @ 2024-05-01 71/week @ 2024-05-08 79/week @ 2024-05-15 59/week @ 2024-05-22 114/week @ 2024-05-29 117/week @ 2024-06-05 114/week @ 2024-06-12 105/week @ 2024-06-19 145/week @ 2024-06-26

每月494次下载

MIT 许可证

38KB
893 代码行

file-matcher

docs crate license

一个基于 Rust 的库,用于根据名称模式(正则表达式、通配符、精确匹配)搜索文件和文件夹。

功能

  • regex - 使用 Regex crate 添加正则表达式支持
  • wildmatch - 使用 Wildmatch crate 添加通配符匹配
  • copier - 允许用户复制声明的文件和文件夹,使用 fs_extra crate
  • mover - 允许用户移动声明的文件和文件夹,使用 fs_extra crate
  • serde - 允许用户序列化/反序列化声明的文件和文件夹过滤器,使用 serde

使用 FileNamed 根据名称模式搜索精确匹配的一个文件。如果没有找到或找到多个文件,则返回一个 Error

FileNamed::regex("cat.*")
    .within("tests/assets")
    .find()?

使用 FolderNamed 根据名称模式搜索精确匹配的一个文件夹。如果没有找到或找到多个文件夹,则返回一个 Error

FolderNamed::wildmatch("cat*")
    .within("tests/assets")
    .find()?

存在性

检查文件是否存在

FileNamed::wildmatch("cat*")
    .within("tests/assets")
    .exists()?

检查文件夹是否存在

FolderNamed::wildmatch("cat*")
    .within("tests/assets")
    .exists()?

复制

查找并复制与名称模式匹配的文件到同一目录下的 destination 文件夹

FileNamed::wildmatch("cat*")
    .within("tests/assets")
    .copy("destination")?

查找并复制与名称模式匹配的文件到 destination 文件夹,并命名为 kitty.txt

FileNamed::wildmatch("cat*")
    .within("tests/assets")
    .copy(Path::new("destination").join("kitty.txt"))?

或者,为复制/移动操作分配别名。以下操作将找到与给定模式名称匹配的文件,并将其复制到 destination 文件夹下的 kitty.txt 命名下

FileNamed::wildmatch("cat*")
    .alias("kitty.txt")
    .within("tests/assets")
    .copy("destination")?

依赖项

~0–700KB
~12K SLoC