Você pode usar o comando date
para encontrar a data de N dias antes e, em seguida, usar grep
para pesquisar em seu arquivo de texto.
grep 'date +%Y-%m-%d -d "5 days ago"' test.txt
test.txt:
./test.2013-06-11_06-01.gz
./test.2013-06-12_01-01.gz
./test.2013-06-13_03-01.gz
./test.2013-06-14_03-01.gz
./test.2013-06-15_04-01.gz
saída:
./test.2013-06-15_04-01.gz
Hoje é 20/06/2013, há 5 dias é 15/06/2013.
Atualizar
A solução final, eu uso um pequeno script:
#!/bin/bash
FILE=$1
tmp="/tmp/tmp_$$.txt"
tmp1="/tmp/tmp1_$$.txt"
maxday=$2
cp $FILE $tmp
for i in 'seq 1 $maxday'
do
date_point='date +%Y-%m-%d -d "$i days ago"'
grep -v "$date_point" $tmp > $tmp1
cp $tmp1 $tmp
done
echo "Files match:"
cat $tmp
rm -rf $tmp
rm -rf $tmp1
Este script irá remover todos os arquivos N dias atrás até agora da saída, então se você quiser encontrar todos os arquivos com mais de N dias, você deve definir maxday = N - 1
, ou seja, se você deseja arquivar com mais de 8 dias:
./test.sh test.txt 7
Ouput:
Files match:
./test.2013-06-11_06-01.gz
./test.2013-06-12_01-01.gz