Apagando arquivos com mais de X dias (Linux/Bash)

Este segue a linha do “Apagando todos os arquivos de um diretório, exceto X mais recentes“. A diferença é que este é (na minha opinião) mais simples e ele apagará todos os arquivos que são foram criados ha mais de X dias. Costumo a utilizar ele como uma função para controlar a quantidade de logs em uma determinada maquina local.

O comando é bem simples e utiliza o utilitário find. Veja um exemplo:

 

Explicando o comando acima:

  1. O primeiro argumento passado para o find foi o caminho onde estão os arquivos (/path/to/file/storage*). Este argumento deve ser o caminho onde o utilitário vai procurar os arquivos. Este argumento aceita wildcards (como está demonstrado no exemplo);
  2. -mtime: Este é o argumento chave. Ele define o ‘filtro’ para o tempo dos arquivos. +5 indica que ele vai procurar arquivos que tenham 5 dias ou mais de “vida”;
  3. -exec: Este argumento possui o comando que será executado para cada um dos arquivos encontrados. Como se fosse o comando utilizado em um for. No caso, estamos utilizando o rm para remover os arquivos. As chaves ({}) fazem referência para cada arquivo. Uma observação importante: você deve utilizar {} no comando que for executar e encerrá-lo com \;

 

Quer testar este comando? Substitua o rm por echo e veja a lista dos arquivos que seriam excluídos:

 

Espero ter ajudado!

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, Linux/Bash and tagged , , , , , .