#!/bin/sh -

#du='gnu du'
du='du'

# mkdu - create disk usage .du-YYYYMMDD_HHMM file in current directory
# Steve Kinzler, steve@kinzler.com, Apr 93/Aug 96/Sep 00/Dec 01/Dec 14/Jun 17
# https://kinzler.com/me/home.html#unixadm

case "$1" in
-h)	cat <<EOF 1>&2
usage: $0 [ -o | -s | -r | -O | -S | -R ]
	-o	output the latest .du-* file
	-s	output the latest .du-* file, sorted numerically increasing
	-r	output the latest .du-* file, sorted numerically decreasing
	-O	output to stdout
	-S	output to stdout, sorted numerically increasing
	-R	output to stdout, sorted numerically decreasing
By default, output is to ./.du-YYYYMMDD_HHMM
EOF
	exit 1;;
esac

case "$1" in
-[osr])	du=`ls .du-* 2> /dev/null | tail -1`
	test -z "$du" && $0
	du=`ls .du-*		  | tail -1`
	test -z "$du" && du=/dev/null
	case "$1" in
	-o)	cat;;
	-s)	sort -n;;
	-r)	sort -nr;;
	esac < "$du"
	exit $?;;
esac

date="`date +%Y%m%d_%H%M`"

ls -a | sed "/^\.$/d; /^\.\.$/d; /^\.du-/d
	     s/'/'\\\\''/g; s/^/'/; s/$/'/" | xargs $du -sx |
	case "$1" in
	-O)	cat;;
	-S)	sort -n;;
	-R)	sort -nr;;
	*)	cat > .du-$date;;
	esac
