该命令尝试总结大小:
find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
awk '{print $1}' | summming_up_program???
您能找到更简单的解决方案吗?
Ubuntu解决方案。感谢Awk-end to Ayman。
find . -iname "*.dmg" -printf '%b\n' |
awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'
答案 0 :(得分:3)
find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
awk 'BEGIN { s = 0 } {s += $1 } END { print s }'
stat
用于获取文件的大小。 awk
用于汇总所有文件大小。
编辑:
不分叉stat
的解决方案:
find . -iname '*.dmg' -ls |
awk 'BEGIN { s = 0 } {s += $7 } END { print s }'
答案 1 :(得分:1)
wc -c *.pyc | tail -n1 | cut -f 1 -d ' '
可能会更快,然后通过管道捕获文件。 wc -c
不计算字节数,它从inode中检索大小...或者我的硬盘读取速度为717 GB / s: - )
$ time wc -c very-big.pcap
5394513291 very-big.pcap
real 0m0.007s
user 0m0.000s
sys 0m0.000s
答案 2 :(得分:0)
cat * .dmg | wc -c
cat将所有文件复制到stdout,wc计算转储的大小。什么都没有写入磁盘。
效率不高,但即使我能理解它:)
答案 3 :(得分:0)
增强Ayman的非分叉命令:
find . -iname '*.dmg' -ls 3&> /dev/null |
awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'
感谢Ayman纠正我的初步答复。