Note: You are viewing an old version of this page. View the current version.

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