#pattern-matching #group #unix-shell #capture #file-path #glob-pattern #range

capturing-glob

An extension for unix shell style globs that allow to capture groups (i.e. remember matching character ranges) while matching.

2 releases

Uses old Rust 2015

0.1.1 Feb 9, 2018
0.1.0 Dec 15, 2017

#1229 in Filesystem

Download history 179/week @ 2024-11-16 409/week @ 2024-11-23 389/week @ 2024-11-30 406/week @ 2024-12-07 374/week @ 2024-12-14 194/week @ 2024-12-21 44/week @ 2024-12-28 307/week @ 2025-01-04 429/week @ 2025-01-11 621/week @ 2025-01-18 408/week @ 2025-01-25 297/week @ 2025-02-01 239/week @ 2025-02-08 257/week @ 2025-02-15 325/week @ 2025-02-22 513/week @ 2025-03-01

1,403 downloads per month
Used in 3 crates

MIT/Apache

74KB
1.5K SLoC

Capturing Glob

Documentation | Github | Crate

Support for matching file paths against Unix shell style patterns, and capture groups when matching (similarly to captures in regexes).

Usage

And add this to your crate root:

extern crate capturing_glob;

Examples

Print all jpg files in /media/ and all of its subdirectories.

use capguring_glob::glob;

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

Note: in the case above, regular filename matching might be used (i.e. file_stem()), but the library allows you to skip unwraps here, but more importantly you can use user-defined globs like these:

  • (*)/package.json
  • tests/(*).spec.js
  • docs/(section-*).rst
  • /usr/share/zoneinfo/(*/*)

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps