#!/usr/bin/ksh
# disk_use.ksh
# calculates disk usage in current directory
# or specified directory
# example: disk_use.ksh or disk_use.ksh /tmp
# displays disk use in byes, kb, MB and GB
################################################################################
# Variables
################################################################################
TMP_LIST=/tmp/TMP_LIST.disk_space.$$ # generic tmp file for data
################################################################################
# Functions
################################################################################
Find_Files ()
{
B_TOTAL=0
find $1 -type f >> $TMP_LIST.find
cat $TMP_LIST.find|while read LINE
do
FILE=$LINE
K=`ls -ld $FILE|awk '{print $5}'`
echo "K = $K"
B_TOTAL=`expr $B_TOTAL + $K`
done
}
Calculate () # peform calculations that require or end in decimals
# the result is returned in the variable $ANSWER
# usage: Calculate [operation] [dec positions]
# ex: Calculate ((144*6)/32) 2
# ex: Calculate ((${NUMBER}*6)/32) 4
{
OPERATION=$1
DEC=$2
> $TMP_LIST.bc
echo "scale=${DEC}" >> $TMP_LIST.bc
echo "$OPERATION" >> $TMP_LIST.bc
echo "quit" >> $TMP_LIST.bc
ANSWER=`bc $TMP_LIST.bc`
}
Disk_Usage ()
{
KB_TOTAL=`du -sk $DIR|awk '{print $1}'`
}
Free_Space ()
{
echo
}
################################################################################
# Main
################################################################################
DIR="$*"
Disk_Usage
Calculate ${KB_TOTAL}*1000 2
B_TOTAL=$ANSWER
Calculate ${KB_TOTAL}/1000 2
MB_TOTAL=$ANSWER
Calculate ${KB_TOTAL}/1000000 2
GB_TOTAL=$ANSWER
echo
echo "bytes: $B_TOTAL"
echo " KB: $KB_TOTAL"
echo " MB: $MB_TOTAL"
echo " GB: $GB_TOTAL"
echo
################################################################################
# End
################################################################################ Robert G. Jordan
Unix Sys Admin
Sleepy Hollow, Illinois U.S.A.
FREE Unix Scripts