Você pode converter o nome do arquivo em algo que possa ser comparado diretamente (como o carimbo de data / hora Unix (número de segundos desde a época) ou YYYYMMDD
, que seria classificável lexicograficamente) e verificar se é mais antigo que seis meses.
Por exemplo, um script como (digamos, em /path/to/compare.sh
):
#! /bin/bash
LAST=$(date -d '6 months ago' +%s)
for FILE
do
NAME=$(basename $FILE)
DATE=$(perl -pe 's/(\d{2})(\d{2})(\d{4})/$3$2$1/' <<<$NAME)
if (( $(date -d "$DATE" '+%s') < $LAST ))
then
rm -r $FILE
fi
done
E faça:
/path/to/compare.sh /var/app/backup/*
Aqui estou convertendo para o número de segundos. Eu tive que reorganizar DDMMYYY
para YYYYMMDD
, pois meu date
não aceitou o primeiro como uma data válida. A conversão para segundos é redundante por causa disso, mas não sei por que date
está rejeitando a primeira (talvez uma questão de localidade?).