#!/bin/bash # countdir # counts entries in a directory periodically # displays number and how long it has been unchanged # wernigm@post.ch 07-05-2000 ######################################################## # Functions usage() { echo echo $1 echo echo "Usage: $0 [INTERVAL]" echo exit 1 } # check command line if [ $# -lt 1 ]; then usage "No directory specified" fi if [ ! $1 -o ! -d $1 ]; then usage "$1 does not appear to be a directory" fi DIR=$1 INTERVAL=60 if [ $2 -a -n $2 ]; then if ! expr $2 + 0 >/dev/null 2>&1; then usage "Interval must be numeric" fi fi if expr $2 + 0 >/dev/null 2>&1; then if [ $2 -gt 0 ]; then INTERVAL=$2 fi fi cnt=`ls -A $DIR | wc -l` cnt2=$cnt cnt3=-1 echo echo "Counting files in $DIR every $INTERVAL seconds" echo while [ $cnt -gt 0 ] do cnt=`ls -A $DIR | wc -l` if [ $cnt -eq $cnt2 ]; then cnt3=`expr $cnt3 + 1` else cnt3=0 fi # if [ $cnt3 -gt 0 ]; then # secs=`expr \( $cnt3 - 1 \) \* $INTERVAL` # else secs=$cnt3 # fi secs=`expr $cnt3 \* $INTERVAL` if [ $secs -lt 60 ]; then TIME="$secs sec." elif [ $secs -ge 60 -a $secs -lt 3600 ]; then MIN=`expr $secs / 60` SEC=`expr $secs % 60` TIME="$MIN min. $SEC sec." elif [ $secs -ge 3600 -a $secs -lt 86400 ]; then HOUR=`expr $secs / 3600` TMP=`expr $secs / 60` MIN=`expr $TMP % 60` SEC=`expr $secs % 60` TIME="$HOUR hrs. $MIN min. $SEC sec." else DAY=`expr $secs / 86400` TMP=`expr $secs / 3600` HOUR=`expr $TMP % 24` TMP=`expr $secs / 60` MIN=`expr $TMP % 60` SEC=`expr $secs % 60` TIME="$DAY days $HOUR hrs. $MIN min. $SEC sec." fi echo "$cnt files ($TIME)" cnt2=$cnt sleep $INTERVAL done