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

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

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

du -ch data/*.txt

如果我通过查找命令pipe道,我没有得到“总计”,

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

做这样的事情:

 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做类似的练习,或者你想用的任何语言。