Shell script para encontrar arquivos duplicados

26/07/2006

Se você é “organizado” como eu, vai achar isso interessante.

Faz um tempo que estou pensando em procurar ou criar algo para encontrar arquivos duplicados no HD, para dar uma liberada nele. Sabe como é, músicas, fotos, backups…

Então hoje, quando decidi realmente procurar ao invés de só pensar em procurar 🙂 , encontrei um shell script interessante em http://elonen.iki.fi/code/misc-notes/remove-duplicate-files/index.html .

O script varre o hd, a partir da pasta atual, localizando arquivos duplicados e gera um shell script com comandos rm comentados. Para apagar os arquivos, edite o arquivo de saída e descomente as linhas dos arquivos que deseja apagar.

Se você tiver dois arquivos iguais, o script gerado terá opção de remoção dos dois, você é quem escolhe qual permanece e qual será apagado.

Abaixo segue o script:

(desculpem a falha, não vi que quando postei a primeira vez sumiram alguns “\”)

OUTF=rem-duplicates.sh;
echo "#! /bin/sh" > $OUTF;
find "$@" -type f -print0 |
xargs -0 -n1 md5sum |
sort --key=1,32 | uniq -w 32 -d --all-repeated=separate |
sed -r 's/^[0-9a-f]*( )*//;s/([^a-zA-Z0-9./_-])/\\\1/g;s/(.+)/#rm \1/' >> $OUTF;
chmod a+x $OUTF; ls -l $OUTF

Espero que se divirtam com isso.

Anúncios

2 Respostas to “Shell script para encontrar arquivos duplicados”

  1. Felipe Leite said

    olá, mui interessante pq é simples. Não tem algo parecido para Windows?

    Se der pra responder via email, agradeço!!!

  2. Roberto Duwe said

    Muito bom o script para encontrar arquivos duplicados.
    Mas necessito de algumas alterações que não sei fazer.
    Necessito que as pastas ocultas sejam ignoradas. Alguém poderia me ajudar?
    E ainda tenho uma outra necessidade. Que seria localizar arquivos com nomes iguais, mas com conteúdos diferentes em pastas diferentes. Ou seja, seria +- versões diferentes de um mesmo arquivo, mas em outras pastas.
    É que muitos usuários copiam um certo arquivo para uma nova pasta, e fazem apenas umas poucas alterações. O que vai deixando lixo espalhado pra todo lado, deixando o HD lotado.
    Encontrei dois softwares que fazem o que o script que vc indicou faz (FSlint e KleanSweep), com alguns recursos a mais. Mas também não tem as funcionalidades que preciso (acima mencionadas)
    Como não como quase nada de shell script, peço ajuda de quem sabe.
    Alguma alma caridosa disposta a isso?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: