Usando o GNU find
:
find . -type f -mtime +5 \
-regextype egrep -regex '.*[0-9]{4}-[0-9]{2}-[0-9]{2}[^/]*$' \
-delete
A expressão regular corresponderá a qualquer string no nome de base de um nome de caminho que contenha uma data no formulário YYYY-MM-DD
. Observe que também podemos corresponder a XXYYY-MM-DDZZ
, em que XX
e ZZ
são outros caracteres.
O [^/]*$
no final garante que, na verdade, estamos combinando a expressão com o nome de base do nome de caminho atual e significa "no /
para o restante da string, por favor".
Usando um padrão de caractere curinga de shell (mais fácil de manter):
find . -type f -mtime +5 \
-name '*[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]*' \
-delete
Observe que -mtime +5
é para arquivos cuja idade como um número inteiro de dias é estritamente maior que 5, portanto, 6 dias ou mais. Para arquivos com 5 dias ou mais, você precisaria de -mtime +4
.