2016-08-13 27 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