加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 包含K,M,G,T的Sum文件大小

发布时间:2020-12-15 21:07:12 所属栏目:安全 来源:网络整理
导读:如果(在zsh中)我有一个包含这样的东西的数组: echo ${fsizes[@]}9.5M 100M 5G 15G 1.2T 是否有一种简单的方法可以在选择的输出中获得这些的总和(即字节,兆字节,千兆字节等?) 解决方法 #!/bin/zshfsizes=( 9.5M 100M 5G 15G 1.2T )typeset -A unitunit=( B
如果(在zsh中)我有一个包含这样的东西的数组:

echo ${fsizes[@]}
9.5M 100M 5G 15G 1.2T

是否有一种简单的方法可以在选择的输出中获得这些的总和(即字节,兆字节,千兆字节等?)

解决方法

#!/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"
}

输出为字节的示例

$sumSize ${fsizes[@]} "B"
Sum is 1341003608883.2 B

输出为Kilobytes的示例

$sumSize ${fsizes[@]} "K"
Sum is 1309573836.8 K

以兆字节为单位的输出示例

$sumSize ${fsizes[@]} "M"
Sum is 1278880.7 M

以GB为单位的输出示例

$sumSize ${fsizes[@]} "G"
Sum is 1248.90693359375 G

以太字节输出的示例

$sumSize ${fsizes[@]} "T"
Sum is 1.2196356773376464 T

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读