Get A Recursive List Of File In A Directory With Specific Extensions In Rust
```cargo
[dependencies]
walkdir = "2"
```
use walkdir::WalkDir;
use std::path::PathBuf;
fn main() {
let dir = PathBuf::from("recursive_test");
let extensions = vec!["html", "txt"];
let files = get_files_with_extensions(&dir, &extensions);
files.iter().for_each(|f| {
println!("File: {}", f.display());
});
}
fn get_files_with_extensions(dir: &PathBuf, extensions: &Vec<&str>) -> Vec<PathBuf>{
WalkDir::new(dir)
.into_iter()
.filter_map(|e| {
let path = e.as_ref().unwrap().path();
match path.extension() {
Some(ext) => {
if extensions.contains(&ext.to_str().unwrap()){
Some(path.to_path_buf())
} else {
None
}
},
None => None
}
})
.collect()
}
Output:
File: recursive_test/example/.hidden_file_1.txt
File: recursive_test/example/a/2.txt
File: recursive_test/example/a/c/4.txt
File: recursive_test/example/a/c/delta.html
File: recursive_test/example/.hidden_file_2.txt
File: recursive_test/example/alfa.html
File: recursive_test/example/1.txt
File: recursive_test/example/bravo.html
File: recursive_test/example/b/3.txt
File: recursive_test/example/b/charlie.html
-- end of line --