dru*_*ire 4 shell zsh sum filesize
如果(在zsh中)我有一个包含这样的东西的数组:
echo ${fsizes[@]}
9.5M 100M 5G 15G 1.2T
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以在选择的输出中获得这些的总和(即字节,兆字节,千兆字节等?)
#!/bin/zsh
fsizes=( 9.5M 100M 5G 15G 1.2T )
typeset -A unit
unit=( B 1 K 1024 M 1048576 G 1073741824 T 1099511627776 )
sumSize(){
sum=0
for sz; do
u=${sz//[^BKMGT]/}
n=${sz//$u/}
b=${unit[$u]}
(( sum += b * n ))
done
out="${@:(-1)}"
echo "Sum is $(( sum / ${unit[$out]} )) $out"
}
Run Code Online (Sandbox Code Playgroud)
$ sumSize ${fsizes[@]} "B"
Sum is 1341003608883.2 B
Run Code Online (Sandbox Code Playgroud)
$ sumSize ${fsizes[@]} "K"
Sum is 1309573836.8 K
Run Code Online (Sandbox Code Playgroud)
$ sumSize ${fsizes[@]} "M"
Sum is 1278880.7 M
Run Code Online (Sandbox Code Playgroud)
$ sumSize ${fsizes[@]} "G"
Sum is 1248.90693359375 G
Run Code Online (Sandbox Code Playgroud)
$ sumSize ${fsizes[@]} "T"
Sum is 1.2196356773376464 T
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |