quarta-feira, 26 de maio de 2010

Excluindo arquivos recursivamente no Linux

Muitos já devem ter passado pela experiência de ter de apagar arquivos de forma recursiva dentro de alguma determinada pasta. No meu trabalho de manutenção frequentemente isso é feito de forma a tornar menor os backups das máquinas, já que vários tipos de arquivos (em especial vídeos e músicas) não são realmente necessários para o bom andamento do serviço.

Claro que isso é só uma desculpa, e não vou entrar no mérito da questão. O real motivo de eu falar sobre isso aqui é que acredito que muitas pessoas aqui passaram por um problema parecido, onde se via na necessidade de, usando o linux, apagar (ou fazer qualquer outra operação) com estes arquivos. A solução que melhor me atende veio de um simples e banal comando do Linux: find...




No meu caso, como precisava apagar todos os arquivos de extensão .mp3, a sintaxe do comando ficou muito simples:

find /caminho -type f -name "*.mp3" -exec rm -fv {} \;


O comando acima indica que devem ser buscados todos os arquivos (-type f) cujo nome contenha a extensão mp3 (-name "*.mp3") e que a cada ocorrência encontrada deve ser executado o comando "rm -fv {nome do arquivo}". As chaves no comando indicam para o find onde ele deve inserir o nome do arquivo em relação ao comando que está sendo executado, no nosso caso o rm, para apagar.

Claro que esse não é o único caso em que o find pode ser utilizado, mas hoje ele praticamente salvou meu dia, diminuindo um backup de aproximadamente 75Gb para apenas 6Gb.

Eh isso meus amigos. Quem quiser saber mais sobre o referido comando e associações que vocês podem fazer com ele, podem dar uma olhada na página find - exemplos de linha de comando que é bem explicativa e mostra vários casos de uso para o mesmo.

Abração, e até a próxima postagem.

Fonte: find MAN Page