Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
[BASH] Convert bytes to human readable
function bytesToHR()
local SIZE=$1
local UNITS="B KiB MiB GiB TiB PiB"
for F in $UNITS; do
local UNIT=$F
test ${SIZE%.*} -lt 1024 && break;
SIZE=$(echo "$SIZE / 1024" | bc -l)
if [ "$UNIT" == "B" ]; then
printf "%4.0f %s\n" $SIZE $UNIT
printf "%7.02f %s\n" $SIZE $UNIT
bytesToHR 1
bytesToHR 1023
bytesToHR 1024
bytesToHR 12345
bytesToHR 123456
bytesToHR 1234567
bytesToHR 12345678

This comment has been minimized.

Copy link
Owner Author

@gnif gnif commented Nov 3, 2018

This script outputs:

   1    B
1023    B
   1.00 KiB
  12.06 KiB
 120.56 KiB
   1.18 MiB
  11.77 MiB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment