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

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

Overview

Chega de acúmulo de arquivos antigos! Neste post, vamos mergulhar em como você pode limpar sua máquina de uma forma eficaz, mantendo tudo organizado. Utilizando um comando simples para apagar arquivos que ultrapassaram uma certa idade, essa dica vai te salvar na gestão de logs ou qualquer diretório que precise de uma limpeza regular. Simples, direto ao ponto e extremamente útil, este guia é perfeito para quem busca otimizar o espaço e a organização dos seus sistemas.

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!