GNU/Linux >> Znalost Linux >  >> Linux

Převést pro člověka čitelné bajty v bash

Zde je funkce, která rozumí binárním a desítkovým předponám a lze ji v případě potřeby snadno rozšířit pro velké jednotky:

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
} 

příklad:

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

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

V příponách se nerozlišují velká a malá písmena.


Použijte numfmt --from=iec z GNU coreutils.


Linux
  1. Převést formáty data v bash

  2. převést výstup bash `ls` na pole json

  3. Převeďte datum ISO na sekundy od epochy v linux bash

  1. Jak převést .. v názvech cest na absolutní název v bash skriptu?

  2. Velikost souboru ve formátu čitelném pro člověka

  3. Spusťte příkaz bash na jenkins pipeline

  1. Bash Převést \xc3\x89 na É?

  2. Převeďte textový řetězec v bash na pole

  3. Třídění velikostí souborů čitelných pro člověka