Apagando todos os arquivos de um diretório, exceto X mais recentes

Situação: Você possui um diretório com arquivos de backup, mas eles estão ocupando muito espaço e você não precisa de ter todos os backups desde 1990, apenas os 5 últimos.  Os exemplos abaixo mostram como fazer isso tanto no Windows quanto no Linux.

Vamos supor que você possui outros arquivos no diretório, mas quer apagar apenas os .zip

No Linux:

Explicando um pouco os comandos acima:

  • ls -tp *.zip:  Lista todos os arquivos .zip do diretório corrente, colocando os mais novos (data de modificação mais recente). Além disso exibe diretórios com uma barra (/) no final;
  • grep -v ‘/$’: Remove os diretórios da lista recebida do comando anterior. (Se existir um link simbólico para um diretório, este comando não conseguirá remove-lo da lista);
  • tail -n +6: Elimina os 5 primeiros itens da listagem, deixando apenas o arquivo de número 6 para frente. Desta forma, da lista de arquivos obtida na primeira parte deste comando, os 5 mais novos não estarão mais listados;
  • tr ‘\n’ ‘\0’: converte os caracteres de quebra de linha (\n) com um delimitador (\0);
  • xargs -0 rm —: processa a lista de arquivo em sequencias de argumentos de um tamanho aceitável para ser utilizado com o comando de remoção de arquivos. Após processa-la, envia a lista de arquivos para o comando rm. O argumento — serve para garantir que arquivos com nomes iniciados com – não sejam confundidos com argumentos do comando rm.

 

 

No Windows…

…Utilizando Batch:

O comando acima é razoavelmente mais simples de explicar do que o comando do Linux. Neste comando, fazemos um simples for, ‘pulando’ os 5 primeiros registros. Os dados que alimentam este for é o comando dir. Para cada arquivo (%%F) será executado o comando del (@del).

 

… Utilizando PowerShell:

O comando acima seleciona os arquivos de forma recursiva, filtra os que são diretórios, organiza a lista por data de criação, seleciona os arquivos por data de criação e (finalmente) os remove.

 

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 Conhecimento Técnico, Dev, Linux/Bash and tagged , , , , , , .

One Comment

  1. Pingback: Apagando arquivos com mais de X dias (Linux/Bash) – Raccoon Ninja

Comments are closed.