#!/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