Come trovare (ed eliminare) file duplicati


125

Ho una vasta collezione musicale e ci sono alcuni duplicati. Esiste un modo per trovare file duplicati. Come minimo facendo un hash e vedendo se due file hanno lo stesso hash.

Punti bonus per la ricerca di file con lo stesso nome oltre all'estensione - Penso di avere alcune canzoni con entrambe le versioni in formato mp3 e ogg.

Sono contento di usare la riga di comando se è il modo più semplice.

Risposte:


138

Io uso fdupesper questo. È un programma a riga di comando che può essere installato dai repository con sudo apt install fdupes. Puoi chiamarlo come fdupes -r /dir/ect/orye stamperà un elenco di duplicati. fdupes ha anche una semplice homepage e un articolo di Wikipedia , che elenca alcuni altri programmi.


7
Ha anche un'opzione "-d" che ti consente di scegliere quale copia vuoi conservare ed elimina le altre (oppure puoi conservarle tutte se vuoi).
Matthew Crumley,

Come posso usare l'opzione -d per risolvere il mio problema qui
John McKean Pruitt

È possibile per fdupes elencare cartelle duplicate anziché file duplicati?
Anderson Green,

2
Puoi spiegare più in dettaglio come eliminare tutti i duplicati (lasciando una sola copia per ogni file) in un albero di directory ricorsivo? Voglio farlo automaticamente, cioè senza dover specificare ogni volta quale file conservare. Dovrebbe solo selezionare uno dei duplicati.
becko,

5
fdupes -r . -d -Ndovrebbe salvare la prima istanza ed eliminare i duplicati. Ho appena cancellato con successo una singola cartella usando in modo fdupes . -d -Nnon ricorsivo
Simon B,

61

FSlint ha una GUI e alcune altre funzionalità. La spiegazione dell'algoritmo di controllo duplicato dalle loro FAQ:

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 Installa fslint


12
Grazie. Si noti che il nome del comando è "fslint-gui" e gli strumenti della riga di comando non sono in $ PATH per impostazione predefinita: sono in / usr / share / fslint / fslint. Ero confuso quando non ho ricevuto aiuto su quale pacchetto fosse semplicemente eseguendo fslint (tramite / usr / lib / comando-non-trovato).
nealmcb,

esattamente ciò che è necessario
Tebe il

1
@nealmcb Se si utilizza sudo apt-get install fslint, l'installazione attualmente si inserisce fslint-guinel percorso e quindi posso eseguirlo da qualsiasi luogo semplicemente digitando fslint-gui. Puoi trovare dove fslint-guivive digitando which fslint-gui(sembra uno script Python).
user29020

55

Elenco di programs/scripts/bash-solutions, che può trovare duplicati ed eseguire in nix:

  1. dupedit : confronta molti file contemporaneamente senza checksum. Evita di confrontare i file con se stessi quando più percorsi puntano allo stesso file.
  2. dupmerge : funziona su varie piattaforme (Win32 / 64 con Cygwin, * nix, Linux ecc.)
  3. dupseek : Perl con algoritmo ottimizzato per ridurre le letture.
  4. fdf : basato su Perl / c e funziona sulla maggior parte delle piattaforme (Win32, * nix e probabilmente altri). Utilizza MD5, SHA1 e altri algoritmi di checksum
  5. freedups : shell script, che cerca nelle directory specificate. Quando trova due file identici, li collega duramente. Ora i due o più file esistono ancora nelle rispettive directory, ma solo una copia dei dati è memorizzata sul disco; entrambe le voci della directory puntano agli stessi blocchi di dati.
  6. fslint : ha un'interfaccia a riga di comando e una GUI.
  7. liten : strumento da riga di comando per la deduplicazione Pure Python e libreria, usando checksum md5 e un nuovo algoritmo di confronto byte. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : una riscrittura del Liten originale, ancora uno strumento da riga di comando ma con una modalità interattiva più veloce usando checksum SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : uno dei pochi che classificano i duplicati in base all'ordine dei parametri di input (directory da scansionare) per non eliminare in fonti "originali / ben note" (se vengono fornite più directory). Utilizza MD5 o SHA1.
  10. rmlint : Fast finder con interfaccia a riga di comando e molte opzioni per trovare anche altri pelucchi (usa MD5)
  11. ua : strumento da riga di comando Unix / Linux, progettato per funzionare con find (e simili).
  12. findrepe : strumento da riga di comando gratuito basato su Java progettato per una ricerca efficiente di file duplicati, può effettuare ricerche all'interno di zip e vasetti (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : una piccola sceneggiatura scritta in Perl. Fa il suo lavoro veloce ed efficiente. 1
  14. ssdeep : identifica i file quasi identici usando lo Hashing a tratti attivato da Context Triggered

4
Qualcuno di questi programmi è in grado di trovare cartelle duplicate (non solo file duplicati?)
Anderson Green

3
@AndersonGreen rmlintpuò trovare directory duplicate. rmlint -T dd
Oligofren,

per Ubuntu, un altro modo è quello di aprire File, cercare (control-f) una determinata estensione (es. .mp3) e quindi ordinare il nome del file; ciò consentirà di eliminare manualmente i duplicati e, allo stesso tempo, mostrerà le posizioni dei duplicati.
axd,

6

Se l'attività di deduplicazione è relativa alla musica, esegui prima l' applicazione picard per identificare e taggare correttamente la tua musica (in modo da trovare file duplicati .mp3 / .ogg anche se i loro nomi non sono corretti). Nota che picard è disponibile anche come pacchetto Ubuntu.

Fatto ciò, in base al musicip_puidtag puoi facilmente trovare tutte le tue canzoni duplicate.


4

Un altro script che fa questo lavoro è rmdupe . Dalla pagina dell'autore:

rmdupe usa i comandi linux standard per cercare file duplicati all'interno delle cartelle specificate, indipendentemente dal nome file o dall'estensione. Prima di rimuovere i candidati duplicati, vengono confrontati byte per byte. rmdupe può anche controllare i duplicati rispetto a una o più cartelle di riferimento, può eliminare i file invece di rimuoverli, consente un comando di rimozione personalizzato e può limitare la sua ricerca a file di dimensioni specificate. rmdupe include una modalità di simulazione che riporta cosa verrà fatto per un determinato comando senza rimuovere effettivamente alcun file.


3

Hai provato

finddup

o

finddup -l

Immagino che funzioni bene.


2

Per la duplicazione e l'identificazione duplicate relative alla musica, Picard e Jaikoz di http://musicbrainz.org/ sono la soluzione migliore. Jaikoz Credo che tagga automaticamente la tua musica in base ai dati del file della canzone. Non è nemmeno necessario il nome del brano per identificarlo e assegnargli tutti i metadati. Anche se la versione gratuita può taggare solo un numero limitato di brani in una corsa, ma puoi eseguirlo tutte le volte che vuoi.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.