Skip to content

Latest commit

 

History

History
27 lines (20 loc) · 954 Bytes

sizes.zh.md

File metadata and controls

27 lines (20 loc) · 954 Bytes

在给定深度(目录),递归计算文件大小

[![walkdir-badge]][walkdir] [![cat-filesystem-badge]][cat-filesystem]

递归一定深度的目录,可以通过以下方式灵活设置:WalkDir::min_depth & WalkDir::max_depth方法。 3 个子文件夹深度的所有文件,其总和大小的计算,忽略根文件夹中的文件。

extern crate walkdir;

use walkdir::WalkDir;

fn main() {
    let total_size = WalkDir::new(".")
        .min_depth(1)
        .max_depth(3)
        .into_iter()
        .filter_map(|entry| entry.ok())
        .filter_map(|entry| entry.metadata().ok())
        .filter(|metadata| metadata.is_file())
        .fold(0, |acc, m| acc + m.len());

    println!("Total size: {} bytes.", total_size);
}