#!/bin/bash
if [ $# -ne 0 -a -d "$1" ]
then
cd "$1"
fi
du -akx . 2> /dev/null | while read SIZE FILENAME
do
STATTYPE=$(stat -c %F "$FILENAME" 2> /dev/null)
case "$STATTYPE" in
[Dd]irectory)
TYPE=d
;;
[Rr]egular?[Ff]ile|regular?empty?file)
TYPE=f
;;
[Ss]ymbolic?[Ll]ink)
TYPE=l
;;
Character?Device|character?special?device)
TYPE=c
;;
Block?Device|block?special?file)
TYPE=b
;;
[Ss]ocket)
TYPE=s
;;
Fifo?File|fifo)
TYPE=p
;;
*)
TYPE='?'
echo "unknown type $STATTYPE"
;;
esac