Como posso excluir todos os arquivos em uma pasta que não foram acessados ​​em um determinado período de tempo?

14

Eu gostaria de executar um trabalho cron noturno que exclua todos os arquivos em uma pasta que não foram acessados ​​em uma semana ou mais. Qual é a maneira mais eficiente de fazer isso no bash?

bloudermilk
fonte
2
findpode filtrar com base no atime. A "correção" do atime depende da configuração (veja noatime), no mínimo.

Respostas:

20

Você quer a findferramenta .

find folder -depth -type f -atime +7 -delete

(Isso excluirá todos os arquivos ( apenas arquivos regulares , sem canais, dispositivos especiais, diretórios, links simbólicos) na pasta fornecida e todos os subdiretórios (recursivamente) nos quais o último tempo de acesso for superior a 7 dias atrás.)

Paŭlo Ebermann
fonte
6
Você pode adicionar -type flá para garantir que ele exclua apenas arquivos, não diretórios inteiros.
Shadur 13/07/11
3

Convém verificar o tmpwatchque pode ser colocado em um trabalho cron. Não há necessidade de criar o seu próprio find. No RHEL está no tmpwatchRPM.

Aaron D. Marasco
fonte
Esta é definitivamente a solução mais elegante, mas prefiro a portabilidade find.
bloudermilk