GNU/Linux >> Tutoriales Linux >  >> Linux

Convertir legible por humanos a bytes en bash

Aquí hay una función que comprende prefijos binarios y decimales y es fácilmente ampliable para unidades grandes en caso de necesidad:

dehumanise() {
  for v in "${@:-$(</dev/stdin)}"
  do  
    echo $v | awk \
      'BEGIN{IGNORECASE = 1}
       function printpower(n,b,p) {printf "%u\n", n*b^p; next}
       /[0-9]$/{print $1;next};
       /K(iB)?$/{printpower($1,  2, 10)};
       /M(iB)?$/{printpower($1,  2, 20)};
       /G(iB)?$/{printpower($1,  2, 30)};
       /T(iB)?$/{printpower($1,  2, 40)};
       /KB$/{    printpower($1, 10,  3)};
       /MB$/{    printpower($1, 10,  6)};
       /GB$/{    printpower($1, 10,  9)};
       /TB$/{    printpower($1, 10, 12)}'
  done
} 

ejemplo:

$ dehumanise 2K 2k 2KiB 2KB 
2048
2048
2048
2000

$ dehumanise 2G 2g 2GiB 2GB 
2147483648
2147483648
2147483648
2000000000

Los sufijos no distinguen entre mayúsculas y minúsculas.


Usa numfmt --from=iec de GNU coreutils.


Linux
  1. Bash Convertir \xc3\x89 a É?

  2. Convertir formatos de fecha en bash

  3. convertir la salida de bash `ls` a una matriz json

  4. Tamaño de archivo en formato legible por humanos

  5. Convierta una cadena de texto en bash en una matriz

Golpear hasta bucle

Declaración de caso Bash

Declaración de Bash if..else

Arreglos bash

Bash Shebang

Cómo mostrar el tamaño del archivo en formato legible por humanos (KB, MB, GB) en la terminal de Linux