Necessário converter bytes para GB, MB, KB no formato decimal normal

3

Eu tenho o código abaixo para converter o byte em valores correspoinding

for OUTPUT in $(find $IP_DIR -maxdepth 1 | awk 'NR>1')
do
    case $RETURNSIZE in
        "gb") FS='du -b $OUTPUT | awk {'print $1'}'
              FS='echo $FS | awk '{ byte =$1 /1024/1024**2 ; print byte " GB" }''
              echo $OUTPUT "|" $FS;;
        "mb") FS='du -b $OUTPUT | awk {'print $1'}'
              FS='echo $FS | awk '{ byte =$1 /1024/1024 ; print byte " MB" }''
              echo $OUTPUT "|" $FS;;
        "kb") FS='du -b $OUTPUT | awk {'print $1'}'
              FS='echo $FS | awk '{ byte =$1 /1024 ; print byte " KB" }''
              echo $OUTPUT "|" $FS;;
        "b")  FS='du -b $OUTPUT | awk {'print $1'}'
              echo $OUTPUT "|" $FS "B";;
    esac


OUTPUT

/home/work/exten.sh | 3.53903e-07 GB
/home/work/e.txt | 0 GB
/home/work/t.txt | 0 GB
/home/worktest | 9.53674e-07 GB
/home/work/s.txt | 3.23169e-07 GB

A lógica parece estar funcionando perfeitamente, mas quando o caso chega a gb (RETURNSIZE), o resultado está no formato exponencial.

Mas estou procurando o resultado no formato decimal normal.

    
por ramp 22.02.2017 / 20:28

1 resposta

3

Eu não testei, mas acho que tem algo a ver com você carregando o bc mathlib com bc -l .

Tente alterar a peça de cálculo awk para GB para:

awk '{ byte =$1 /1024/1024/1024; print byte " GB" }'

Observação: 1024/1024**2 é equivalente a 1024/1024/1024 em awk .

    
por 22.02.2017 / 23:47