Como encontrar (e excluir) arquivos duplicados

125

Eu tenho uma grande coleção de músicas e existem algumas duplicatas lá. Existe alguma maneira de encontrar arquivos duplicados. No mínimo, faça um hash e verifique se dois arquivos têm o mesmo hash.

Pontos de bônus por também encontrar arquivos com o mesmo nome, além da extensão - acho que tenho algumas músicas nas versões mp3 e ogg.

Fico feliz em usar a linha de comando, se essa for a maneira mais fácil.

Hamish Downer
fonte

Respostas:

138

Eu uso fdupespara isso. É um programa de linha de comando que pode ser instalado a partir dos repositórios com sudo apt install fdupes. Você pode chamá-lo assim fdupes -r /dir/ect/orye ele imprimirá uma lista de enganadores. O fdupes também possui uma página inicial simples e um artigo da Wikipedia , que lista mais alguns programas.

qbi
fonte
7
Ele também possui uma opção "-d" que permite escolher qual cópia você deseja manter e excluir as outras (ou você pode mantê-las, se quiser).
Matthew Crumley
Como posso usar a opção -d para resolver o meu problema aqui
John McKean Pruitt
É possível que os fdupes listem pastas duplicadas em vez de arquivos duplicados?
Anderson Green
2
Você pode explicar com mais detalhes como excluir todas as duplicatas (deixando apenas uma única cópia de cada arquivo) em uma árvore de diretórios recursiva? Quero fazer isso automaticamente, ou seja, sem precisar especificar cada vez que arquivo manter. Deve apenas selecionar uma das duplicatas.
Becko
5
fdupes -r . -d -Ndeve salvar a primeira instância e excluir os dupes. Eu só sucesso limpou uma única pasta usando fdupes . -d -Nnão recursivamente
Simon B
61

O FSlint possui uma GUI e alguns outros recursos. A explicação do algoritmo de verificação duplicada nas perguntas frequentes:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

fslint Instale o fslint

Dominik
fonte
12
Obrigado. Observe que o nome do comando é "fslint-gui" e as ferramentas de linha de comando não estão no $ PATH por padrão - elas estão em / usr / share / fslint / fslint. Fiquei confuso quando não recebi ajuda sobre qual pacote estava executando o fslint (via / usr / lib / command-not-found).
Nealmcb 19/11
exatamente o que é necessário
Tebe
1
@nealmcb Se estiver usando sudo apt-get install fslint, a instalação atualmente coloca fslint-guio caminho e, portanto, posso executá-lo de qualquer lugar, basta digitar fslint-gui. Você pode encontrar onde fslint-guimora digitando which fslint-gui(parece um script Python).
user29020
55

Lista de programs/scripts/bash-solutions, que pode encontrar duplicatas e executar em nix:

  1. dupedit : Compara muitos arquivos de uma só vez sem soma de verificação. Evita comparar arquivos entre si quando vários caminhos apontam para o mesmo arquivo.
  2. dupmerge : roda em várias plataformas (Win32 / 64 com Cygwin, * nix, Linux etc.)
  3. dupseek : Perl com algoritmo otimizado para reduzir leituras.
  4. fdf : baseado em Perl / c e roda na maioria das plataformas (Win32, * nix e provavelmente outras). Usa MD5, SHA1 e outros algoritmos de soma de verificação
  5. freedups : script de shell, que pesquisa nos diretórios que você especificar. Quando encontra dois arquivos idênticos, os vincula permanentemente. Agora, os dois ou mais arquivos ainda existem em seus respectivos diretórios, mas apenas uma cópia dos dados é armazenada no disco; ambas as entradas do diretório apontam para os mesmos blocos de dados.
  6. fslint : possui interface de linha de comando e GUI.
  7. liten : Ferramenta de linha de comando e desduplicação do Pure Python, e biblioteca, usando somas de verificação md5 e um novo algoritmo de comparação de bytes. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : Uma reescrita do Liten original, ainda uma ferramenta de linha de comando, mas com um modo interativo mais rápido usando somas de verificação SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : Um dos poucos que classifica as duplicatas com base na ordem dos parâmetros de entrada (diretórios a serem varridos) para não excluir em fontes "originais / conhecidas" (se vários diretórios forem fornecidos). Usa MD5 ou SHA1.
  10. rmlint : localizador rápido com interface de linha de comando e muitas opções para encontrar outros fiapos também (usa MD5)
  11. ua : ferramenta de linha de comando Unix / Linux, projetada para funcionar com o find (e similares).
  12. findrepe : ferramenta gratuita de linha de comando baseada em Java, projetada para uma pesquisa eficiente de arquivos duplicados, pode pesquisar dentro de zips e jars (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : um pequeno script escrito em Perl. Fazendo seu trabalho de forma rápida e eficiente. 1
  14. ssdeep : identifique arquivos quase idênticos usando o hash por partes disparado por contexto
v2r
fonte
4
São qualquer um desses programas capazes de encontrar pastas duplicadas (e não apenas arquivos duplicados?)
Anderson verdes
3
@AndersonGreen rmlintpode encontrar diretórios duplicados. rmlint -T dd
precisa saber é
para o Ubuntu, outra maneira é abrir Arquivos, pesquisar (control-f) por uma extensão específica (por exemplo, .mp3) e depois classificar no nome do arquivo; isso permitirá excluir as duplicatas manualmente e, ao mesmo tempo, mostrar os locais das duplicatas.
AXD
6

Se sua tarefa de desduplicação estiver relacionada à música, primeiro execute o aplicativo picard para identificar e marcar corretamente sua música (para encontrar arquivos duplicados .mp3 / .ogg, mesmo que seus nomes estejam incorretos). Observe que o picard também está disponível como um pacote Ubuntu.

Feito isso, com base na musicip_puidtag, você pode encontrar facilmente todas as suas músicas duplicadas.

ΤΖΩΤΖΙΟΥ
fonte
4

Outro script que faz esse trabalho é rmdupe . Na página do autor:

O rmdupe usa comandos linux padrão para procurar arquivos duplicados nas pastas especificadas, independentemente do nome do arquivo ou extensão. Antes da remoção de candidatos duplicados, eles são comparados byte a byte. O rmdupe também pode verificar duplicatas em uma ou mais pastas de referência, pode lixeira de arquivos em vez de removê-los, permite um comando de remoção personalizado e pode limitar sua pesquisa a arquivos de tamanho especificado. O rmdupe inclui um modo de simulação que relata o que será feito para um determinado comando sem remover nenhum arquivo.

girardengo
fonte
3

Você tentou

finddup

ou

finddup -l

Eu acho que funciona bem.

xerostomus
fonte
2

Para identificação e exclusão duplicadas relacionadas à música, Picard e Jaikoz por http://musicbrainz.org/ é a melhor solução. Jaikoz Eu acredito que você marca automaticamente sua música com base nos dados do arquivo de música. Você nem precisa do nome da música para identificar a música e atribuir todos os metadados a ela. Embora a versão gratuita possa marcar apenas um número limitado de músicas em uma execução, você pode executá-la quantas vezes quiser.

Yathi
fonte
2

Eu uso o komparator - sudo apt-get install komparator( Ubuntu 10.04+ ) - como ferramenta GUI para encontrar duplicatas no modo manual.

N0rbert
fonte