2016-08-13 62 views
1

当然,find -exec可以让我用来stat获取文件的大小,和一个小的Python的一行来概括是:计算文件列表的大小,而不使用find/-exec

find . -name "*.sh" -exec stat -f '%z' {} \; | python -c'import sys; print sum(int(x) for x in sys.stdin)'

我想可能会使用bc来制造更多类似bash的效果。

但是,(问题),我已经有一个文件列表,find -exec已经出来。我如何简洁而优雅地获取管道中的文件大小。我可以使用一个xargsdu|cut管道,但尽管在xargs上有-s,但我冒着冒起命令长度或不得不过度分配到千兆字节的风险。

我希望的东西,可以计算的磁盘使用情况,并在标准的中心的方式做到这一点:

cat myList.txt -exec stat -f '%z' {} \; | python -c'import sys; print sum(int(x) for x in sys.stdin)'

猫不具有虽然:-(

回答

2
的-exec

您可以使用管道与xargs duawk

xargs -a file.list du -b | awk '{t+=$1}END{print t}' 

这使你在累计大小字节。

+0

在此配置中,xargs是否对命令长度有上限?我的意思是通过这样做 - 而不是让xargs从标准中拉出来。 我应该在之前说过,但我在Mac上,而且这并没有-a的选择,不幸的是。 –

+0

'-a'选项不会影响最大命令长度。 – hek2mgl