#glob #fnmatch #find #wildmatch

filenamegen

Shell-style filename generation aka globbing

8 releases

0.2.7 Aug 25, 2024
0.2.6 May 13, 2024
0.2.4 Apr 14, 2020

#158 in Filesystem

Download history 1203/week @ 2024-08-16 1196/week @ 2024-08-23 1004/week @ 2024-08-30 879/week @ 2024-09-06 2446/week @ 2024-09-13 1901/week @ 2024-09-20 1039/week @ 2024-09-27 1131/week @ 2024-10-04 1596/week @ 2024-10-11 1221/week @ 2024-10-18 1169/week @ 2024-10-25 1195/week @ 2024-11-01 1168/week @ 2024-11-08 1210/week @ 2024-11-15 983/week @ 2024-11-22 1169/week @ 2024-11-29

4,801 downloads per month
Used in 5 crates (via wezterm-ssh)

MIT license

36KB
827 lines

filenamegen

Filename Generation, aka Globbing.

This crate implements shell style file name generation a.k.a.: globbing. The provided globber can expand globs relative to a specified directory (or just the current working directory). filenamegen tries to avoid walking down paths that will never match a glob in order to reduce pressure on the underlying filesystem.

This simple example recursively finds all of the rust source files under the current directory.

use filenamegen::Glob;

fn main() -> anyhow::Result<()> {
  let glob = Glob::new("**/*.rs")?;
  for path in glob.walk(std::env::current_dir()?) {
    println!("{}", path.display());
  }
  Ok(())
}

License: MIT


lib.rs:

Filename Generation, aka Globbing.

This crate implements shell style file name generation a.k.a.: globbing. The provided globber can expand globs relative to a specified directory (or just the current working directory). filenamegen tries to avoid walking down paths that will never match a glob in order to reduce pressure on the underlying filesystem.

This simple example recursively finds all of the rust source files under the current directory.

use filenamegen::Glob;

fn main() -> anyhow::Result<()> {
  let glob = Glob::new("**/*.rs")?;
  for path in glob.walk(std::env::current_dir()?) {
    println!("{}", path.display());
  }
  Ok(())
}

Dependencies

~3–10MB
~100K SLoC