prettymag.awk:
#!/usr/bin/awk -f BEGIN { total = 0; "stat -fc '%s' ." | getline blksz; close("stat -fc '%s' .") syms[0] = "B"; syms[1] = "K"; syms[2] = "M"; syms[3] = "G"; syms[4] = "T"; syms[5] = "P"; } function prettymag(count) { count = count; mag = 0; while (count > 1024) { mag += 1; count /= 1024; } sym = syms[mag]; if (mag == 0) { return sprintf("%0.0f%s", count, sym); } else { if (count < 10) { return sprintf("%0.2f%s", count, sym); } else if (count < 100) { return sprintf("%0.1f%s", count, sym); } else { return sprintf("%0.0f%s", count, sym); } } } /^([0-9]+)\t(.*)$/ { name = $0 sub(/^[0-9]+\t/, "", name) total += $1 if (($1 % blksz) > 0) { total += (blksz - ($1 % blksz)) } print prettymag($1) "\t" name; } END { print "----" print prettymag(total) "\t" "Total"; }
pigs.sh:
#!/bin/sh du_flags="-sxb" sort_flags="-bn" while [ "${1}" ] do case "${1}" in -k) du_flags="${du_flags} -k" ;; -d) sort_flags="${sort_flags} -r" ;; esac shift done # Old format code commaizes century numbers, but does so even in filenames #find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \ # xargs -0 du ${du_flags} | sort ${sort_flags} | \ # awk '{ c = c + $1; print }END{ print "----\n" c "\tTotal" }' | \ # sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \ xargs -0 du ${du_flags} | sort ${sort_flags} | \ prettymag.awk