我在 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 或任何您想使用的语言进行类似的练习。