#! /bin/sh libdir=@LIBDIR@/beam set -e . $libdir/common.sh set +e dir= suffix= retainweeks=3 dry_run= verbose=: help() { cat <&2 "$0: unrecognized option $1" exit 1;; *) break esac shift done case $# in 0) echo >&2 "$0: not enough arguments" exit 1;; 1) dir=$1;; *) echo >&2 "$0: too many arguments" exit 1;; esac thisweek=$(date +%U) # Warning: do not use shell arithmetic expansions on week numbers, # because weeks prior to 10 begin with 0 and therefore are processed # as octal numbers. This causes grief for weeks 08 and 09. if [ $thisweek -gt $retainweeks ]; then lastweek=$(expr $thisweek - $retainweeks) else lastweek=$(expr $thisweek + 54 - $retainweeks) fi $verbose \# removing from $dir files ending in $suffix and older than week $lastweek if [ -z "$suffix" ]; then find $dir -maxdepth 1 -type f -printf '%f\n' else find $dir -maxdepth 1 -type f -name "*$suffix" -printf '%f\n' fi | while read name do $verbose \# considering $name week=$(expr "$name" : '[^-][^-]*-\([0-9][0-9]*\)-.*') if [ $thisweek -ge $week ]; then if [ $(expr $thisweek - $week) -gt $retainweeks ]; then $verbose \# removing $name $dry_run rm $dir/$name fi else if [ $(expr $thisweek + 54 - $week) -gt $retainweeks ]; then $verbose \# removing $name $dry_run rm $dir/$name fi fi done