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:

find /path/to/file/storage* -mtime +5 -exec rm {} \;

 

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:

find /path/to/file/storage* -mtime +5 -exec echo {} \;

 

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Linux/Bash and tagged , , , , , .