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:
- 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);
- -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”;
- -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.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022