: ########################################################################## # Shellscript: cleartmp - remove temporary files/directories # Version : 1.5 # Author : Heiner Steven (heiner.steven@odn.de) # Category : System Administration # Date : 02/24/94 ########################################################################## # Description # Delete files older than a specified number of days. # # Changes # 08/31/92 stv remove subdirectories, if necessary # 10/02/92 stv check for "mtime" instead of "atime" # 10/28/94 stv use xargs # 12/01/94 stv remove old links (FIFOs, ...), too (1.5) ########################################################################## PN=`basename $0` # program name VER='1.5' Days=7 # remove files older than 7 days Usage () { echo "$PN - remove temporary files/directories, $VER (stv '92) usage: $PN [-d days] directory [directory ...] All files and subdirectories older than the specified number of days (default $Days) are deleted." >&2 exit 1 } Msg () { for i do echo "$PN: $i" >&2 done } Fatal () { Msg "$@"; exit 1; } set -- `getopt hd: "$@"` || Usage while [ $# -gt 0 ] do case "$1" in -d) case "$2" in [0-9]*) Days="$2"; shift;; *) Fatal "illegal number of days: $2";; esac;; --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done [ $# -lt 1 ] && Usage for i do if [ ! -d "$i" ] then Msg "no directory: $i" elif [ ! -r "$i" -o ! -w "$i" ] then Msg "access denied (need read- and write access): $i" else # Find files, links, FIFOs or sockets find "$i" ! -type d -mtime +$Days -print | xargs rm -f > /dev/null 2>&1 # remove all empty subdirectories [ -d "$i" ] || continue (cd $i || continue for d in * do [ -d "$d" ] || continue find . -depth -type d -mtime +$Days -print | xargs rmdir > /dev/null 2>&1 done ) fi done exit 0