Obrigado zekkerj
Me sugeriram um programa pela linha de comando o fdupes. E passei uma hora fazendo um tutorial dele.
Posto aqui porque pode ser de muita utilidade para todos.
TUTOR:
Como remover arquivos duplicados no Linux com fdupes
Uma tarefa muito comum que precisamos realizar de tempos em tempos é a de procurar e eliminar arquivos duplicados em um sistema. Esse é um procedimento que permite liberar espaço precioso em disco, cuja falta pode significar problemas sérios se não for levado em conta.
Porém, essa limpeza, se realizada manualmente, pode ser extremamente tediosa e levar muito tempo, sendo recomendado usar ferramentas específicas para esse fim. Neste tutorial vamos mostrar como utilizar uma ferramenta para eliminação de arquivos duplicados no Linux, usando como exemplo o Debian GNU/Linux; a ferramenta também pode ser executada em outras distribuições, como as das famílias Fedora e Red Hat, por exemplo.
A ferramenta que utilizaremos se chama fdupes, escrita em linguagem C e distribuída sob a licença MIT.
Como instalar o fdupes: Em sistemas baseados em Debian podemos instalar a ferramenta usando o bom e velho apt:
$ sudo apt-get install fdupes
Sintaxe do comando:
fdupes [opções] diretório01 diretório02 …
Opções principais
-r --recurse
Modo recursivo: procura arquivos duplicados no diretório e em seus subdiretórios
-s --symlinks
Seguir links simbólicos
-H --hardlinks
No geral, quando dois ou mais arquivos apontam para a mesma área do disco, eles são tratados como não-duplicados. Com essa opção, esse comportamento é alterado.
-n --noempty
Não leva em consideração arquivos de tamanho 0.
-A --nohidden
Não considera arquivos ocultos na varredura
-q --quiet
Ocultar o indicador de progresso da tarefa
-f --omitfirst
Omitir o primeiro arquivo em cada conjunto de arquivos duplicados encontrados
-S --size
Mostrar o tamanho dos arquivos duplicados
-d --delete
Pergunta ao usuário quais arquivos deseja preservar, e exclui os demais
-N --noprompt junto com --delete
Preserva o primeiro arquivo em cada conjunto de duplicados e exclui o restante sem perguntar
-v --version
Mostra a versão do fdupes instalada.
Exemplos de uso do fdupes
1 - Para encontrar arquivos duplicados com o fdupes, basta executá-lo, sem parâmetros, indicando o caminho do diretório que se deseja analisar:
$ fdupes /caminho/diretório
Será exibida uma lista contendo os nomes dos arquivos duplicados encontrados no diretório passado como argumento. Para que também sejam analisados os subdiretórios, utilize a opção -r (modo recursivo).
2 - Também é possível especificar mais de um diretório distinto para que seja feita a varredura por arquivos duplicados, de uma só vez, separando os caminhos dos diretórios por espaços:
$ fdupes /home/fabio /home/ana
3 - Com a opção -S é possível verificar os tamanhos dos arquivos duplicados encontrados, como segue:
$ fdupes -S /home/fabio
4 - Do ponto de vista da segurança, você pode imprimir a saída de 'fdupes' no arquivo e, em seguida, verificar o arquivo de texto para decidir qual arquivo será excluído. Esta diminuição das chances de obter seu arquivo excluído acidentalmente. Você pode fazer:
$ fdupes -Sr /home/fabio > /home/fdupes.txt
5 - Para excluir todos os arquivos duplicados em um diretório, podemos utilizar a opção -d:
$ fdupes -d /home/fabio/Documentos
Excluindo arquivos duplicados no Linux com fdupes
Essa opção exclui todas os arquivos duplicados, porém preservando uma cópia de cada. O programa pergunta qual das cópias você deseja manter, ou se deseja manter todas (all). No exemplo, eu decidi manter a cópia de número 2 (o arquivo exemplo4). Basta entrar com o número da cópia e pressionar enter - as demais instâncias do arquivo serão eliminadas automaticamente.
É isso aí! Você pode testar as demais opções mostradas acima para aprender mais sobre o utilitário, e, como sempre, pode ler as páginas de manual para obter a ajuda completa do utilitário, que possui diversas outras opções disponíveis.
5 - Não existe uma opção que seria movida para o lixo em vez de excluir os arquivos?
1 – A opção é esta:
$ for f in $(fdupes -f .); do gvfs-trash $f; done for f in $(fdupes -f .); do gvfs-trash $f; done for f in $(fdupes -f .); do gvfs-trash $f; done
2 - Se você tiver nomes de arquivos com espaços e caracteres especiais ou muitos arquivos. Melhor ainda seria
$ fdupes -f . | xargs -rd '\n' -- gvfs-trash fdupes -f . | xargs -rd '\n' -- gvfs-trash fdupes -f . | xargs -rd '\n' -- gvfs-trash
Obrigado zekkerj