#! /bin/sh # This file is part of BEAM # Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # BEAM is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with BEAM. If not, see . 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