Home COMSC-171 <- Prev Next ->

Disk Hog Script

This script hog.bash reports disk use sorted by size. It takes one optional argument, the directory to search.

code

# paramater expansion with default value, $1 is 1st command line argument # if $1 exists set Homes to $1, otherwise to /home Homes=${1:-/home} # assign each command output line to 2 array elements, account size and name Accounts=($(du -s $Homes/* 2> /dev/null | sort -k1nr)) # C-style for loop over pairs of array elements # account names are odd-numbered elements, sizes are even-numbered elements # -e enables escapes, \t is tab for (( Index=0 ; Index < ${#Accounts[@]} ; Index+=2 )) ; do echo -e "${Accounts[Index+1]}\t${Accounts[Index]}" done

usage

bash hog.bash /home1