28 releases

Uses old Rust 2015

0.3.2 Dec 29, 2024
0.3.1 Jan 6, 2023
0.3.0 Mar 7, 2019
0.2.11 Mar 6, 2016
0.1.0 Nov 27, 2014

#6 in Filesystem

Download history 1850231/week @ 2024-10-30 1798615/week @ 2024-11-06 1833740/week @ 2024-11-13 1770286/week @ 2024-11-20 1563142/week @ 2024-11-27 1828049/week @ 2024-12-04 1917513/week @ 2024-12-11 1589630/week @ 2024-12-18 960429/week @ 2024-12-25 1633694/week @ 2025-01-01 2127051/week @ 2025-01-08 2041837/week @ 2025-01-15 2071597/week @ 2025-01-22 2173122/week @ 2025-01-29 2420157/week @ 2025-02-05 1915196/week @ 2025-02-12

8,943,489 downloads per month
Used in 15,919 crates (1,788 directly)

MIT/Apache

56KB
1K SLoC

glob

Support for matching file paths against Unix shell style patterns.

Continuous integration

Documentation

Usage

To use glob, add this to your Cargo.toml:

[dependencies]
glob = "0.3.1"

If you're using Rust 1.30 or earlier, or edition 2015, add this to your crate root:

extern crate glob;

Examples

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

use 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:

Support for matching file paths against Unix shell style patterns.

The glob and glob_with functions allow querying the filesystem for all files that match a particular pattern (similar to the libc glob function). The methods on the Pattern type provide functionality for checking if individual paths match a particular pattern (similar to the libc fnmatch function).

For consistency across platforms, and for Windows support, this module is implemented entirely in Rust rather than deferring to the libc glob/fnmatch functions.

Examples

To print all jpg files in /media/ and all of its subdirectories.

use 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),
    }
}

To print all files containing the letter "a", case insensitive, in a local directory relative to the current working directory. This ignores errors instead of printing them.

use glob::glob_with;
use glob::MatchOptions;

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

No runtime deps