首页 > 解决方案 > 递归地输出目录中某些类型的所有文件的文件大小?

问题描述

我试图在一个目录中递归地获取 PDF 文件的总大小的总和。我尝试在目录中运行下面的命令,但递归部分无法正常工作,因为它似乎只报告当前目录中的文件而不包括其中的目录。我预计结果的大小接近 100 GB,但是该命令仅报告大约 200 MB 的文件。

find . -name "*.pdf" | xargs du -sch

请帮忙!

标签: linuxunix

解决方案


用于stat -c %n,%s获取单个文件的file namesize。然后使用awk对大小求和并打印。

$ find . -name '*.pdf' -exec stat -c %n,%s {} \; | awk -F, '{sum+=$2}END{print sum}'

事实上你不需要%n,因为你只想要总和:

$ find . -name '*.pdf' -exec stat -c %s {} \; | awk '{sum+=$1}END{print sum}'

推荐阅读