#! /bin/sh 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) lastweek=$((thisweek - retainweeks)) $verbose \# removing files older than week $lastweek if [ -z "$suffix" ]; then find $dir -type f -printf '%f\n' else find $dir -type f -name "*$suffix" -printf '%f\n' fi | while read name do $verbose \# considering $name week=$(expr "$name" : '[^-][^-]*-\([0-9][0-9]*\)-.*') if [ $week -le $lastweek ]; then $verbose \# removing $name $dry_run rm $dir/$name fi done