如何计算具有特定扩展名的大量文件的总大小?

如何计算具有特定扩展名的大量文件的总大小?

我在 Linux 中有一个包含大量文件(数万个)的目录,还有一些目录可能包含数千个文件。

在某些时候,以下 du 命令会失败并出现“参数列表太长”错误:

du -ch data/*.txt

如果我通过 find 命令进行管道传输,则得不到“总计”,

find data/ -iname '*.txt' | xargs du -ch

答案1

做这样的事:

find data -iname '*.txt'  |xargs stat -c '%s' |awk '{total=total+$1}END{mbtotal = total / 1000000 ; print mbtotal}'

基本上,使用 获取文件列表find,使用 获取每个匹配的文件大小stat(格式化输出以便只显示大小),然后使用 将其加起来awk(在我的例子中,除以 1,000,000 得到类似兆字节的数值;根据需要更改分母)。

您还可以使用 Perl 或任何您想使用的语言进行类似的练习。

相关内容