Para encontrar arquivos modificados pela última vez há mais de cinco dias:
find /path/to/directory -type f -mtime +4
Para excluí-los ao mesmo tempo (teste acima do primeiro ):
find /path/to/directory -type f -mtime +4 -delete
Para automatizá-lo para que você esteja executando isso diariamente, execute crontab -e
(como o usuário que você deseja executar esta tarefa) e adicione:
@daily find /path/to/directory -type f -mtime +4 -delete
Uma experiência para mostrar qual valor de mtime
você deseja usar. O manual é lixo. Eu assumi que +5
era o que queríamos, mas um comentário discordou. A documentação parece estar em conflito, então comecei criando três arquivos, cada um com 1 dia de intervalo:
$ mkdir test
$ touch test/now
$ touch -d "1 day ago" test/yesterday
$ touch -d "2 days ago" test/day-before-yesterday
$ ls -l test
total 0
-rw-r--r-- 1 oli oli 0 Nov 26 13:12 day-before-yesterday
-rw-r--r-- 1 oli oli 0 Nov 28 13:11 now
-rw-r--r-- 1 oli oli 0 Nov 27 13:12 yesterday
Se quisermos algo entre 24 e 48 horas, usamos 1 sem sinal.
$ find test -mtime 1
test/yesterday
Mas se queremos coisas 24 horas +, +1
não funciona:
$ find test -mtime +1
test/day-before-yesterday
+1
parece significar "mais do que 1
mostra" ... Então +0
é usado:
$ find test -mtime +0
test/day-before-yesterday
test/yesterday
Tudo muito chato se você está acostumado a ser correto como eu ... Mas vou me recuperar, tenho certeza. Obrigado pela cutucada de Adaephon.