[![walkdir-badge]][walkdir] [![cat-filesystem-badge]][cat-filesystem]
使用filter_entry
深度递归,传递的是is_not_hidden
断言,因此跳过隐藏的文件和目录。Iterator::filter
应用到每个WalkDir::DirEntry
,即使父目录是隐藏目录。
根目录"."
的结果输出,是通过is_not_hidden
断言中WalkDir::depth
的使用。
extern crate walkdir;
use walkdir::{DirEntry, WalkDir};
fn is_not_hidden(entry: &DirEntry) -> bool {
entry
.file_name()
.to_str()
.map(|s| entry.depth() == 0 || !s.starts_with("."))
.unwrap_or(false)
}
fn main() {
WalkDir::new(".")
.into_iter()
.filter_entry(|e| is_not_hidden(e))
.filter_map(|v| v.ok())
.for_each(|x| println!("{}", x.path().display()));
}