Cómo encontrar (y eliminar) archivos duplicados

125

Tengo una gran colección de música y hay algunos duplicados allí. ¿Hay alguna forma de encontrar archivos duplicados? Como mínimo, haciendo un hash y viendo si dos archivos tienen el mismo hash.

Puntos de bonificación para también encontrar archivos con el mismo nombre aparte de la extensión: creo que tengo algunas canciones con versiones en formato mp3 y ogg.

Estoy feliz de usar la línea de comando si esa es la forma más fácil.

Hamish Downer
fuente

Respuestas:

138

Yo uso fdupespara esto. Es un programa de línea de comandos que se puede instalar desde los repositorios con sudo apt install fdupes. Puede llamarlo así fdupes -r /dir/ect/orye imprimirá una lista de engañados. fdupes también tiene una página de inicio simple y un artículo de Wikipedia , que enumera algunos programas más.

qbi
fuente
77
También tiene una opción "-d" que le permite elegir qué copia desea conservar y elimina las otras (o puede conservarlas todas si lo desea).
Matthew Crumley
¿Cómo puedo usar la opción -d para solucionar mi problema aquí?
John McKean Pruitt
¿Es posible que fdupes enumere carpetas duplicadas en lugar de archivos duplicados?
Anderson Green
2
¿Puede explicar con más detalle cómo eliminar todos los duplicados (dejando solo una copia de cada archivo) en un árbol de directorio recursivo? Quiero hacer esto automáticamente, es decir, sin tener que especificar cada vez qué archivo guardar. Solo debe seleccionar uno de los duplicados.
Becko
55
fdupes -r . -d -Ndebe guardar la primera instancia y eliminar los engaños. Acabo de borrar con éxito una sola carpeta usando de forma fdupes . -d -Nno recursiva
Simon B
61

FSlint tiene una GUI y algunas otras características. La explicación del algoritmo de verificación duplicado de sus preguntas frecuentes:

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

Dominik
fuente
12
Gracias. Tenga en cuenta que el nombre del comando es "fslint-gui", y las herramientas de línea de comando no están en $ PATH por defecto, sino en / usr / share / fslint / fslint. Estaba confundido cuando no recibí ayuda sobre en qué paquete estaba simplemente ejecutando fslint (a través de / usr / lib / command-not-found).
nealmcb
exactamente lo que es necesario
Tebe
1
@nealmcb Si se usa sudo apt-get install fslint, la instalación actualmente se coloca fslint-guien la ruta y, por lo tanto, puedo ejecutarla desde cualquier lugar simplemente escribiendo fslint-gui. Puede encontrar dónde fslint-guivive escribiendo which fslint-gui(parece un script de Python).
user29020
55

Lista de programs/scripts/bash-solutions, que puede encontrar duplicados y ejecutar bajo nix:

  1. dupedit : compara muchos archivos a la vez sin suma de comprobación. Evita comparar archivos con ellos mismos cuando varias rutas apuntan al mismo archivo.
  2. dupmerge : se ejecuta en varias plataformas (Win32 / 64 con Cygwin, * nix, Linux, etc.)
  3. dupseek : Perl con algoritmo optimizado para reducir las lecturas.
  4. fdf : basado en Perl / c y se ejecuta en la mayoría de las plataformas (Win32, * nix y probablemente otras). Utiliza MD5, SHA1 y otros algoritmos de suma de verificación
  5. liberaciones : script de shell, que busca a través de los directorios que especifique. Cuando encuentra dos archivos idénticos, los une entre sí. Ahora los dos o más archivos todavía existen en sus respectivos directorios, pero solo una copia de los datos se almacena en el disco; ambas entradas de directorio apuntan a los mismos bloques de datos.
  6. fslint : tiene interfaz de línea de comandos y GUI.
  7. liten : herramienta de línea de comandos de deduplicación de Python puro, y biblioteca, usando sumas de verificación md5 y un nuevo algoritmo de comparación de bytes. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : una reescritura del Liten original, todavía una herramienta de línea de comando pero con un modo interactivo más rápido usando sumas de verificación SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : uno de los pocos que clasifica los duplicados según el orden de los parámetros de entrada (directorios para escanear) para no eliminarlos en fuentes "originales / bien conocidas" (si se proporcionan varios directorios). Utiliza MD5 o SHA1.
  10. rmlint : buscador rápido con interfaz de línea de comando y muchas opciones para encontrar otra pelusa también (usa MD5)
  11. ua : herramienta de línea de comandos Unix / Linux, diseñada para trabajar con find (y similares).
  12. findrepe : herramienta gratuita de línea de comandos basada en Java diseñada para una búsqueda eficiente de archivos duplicados, puede buscar dentro de archivos zip y frascos (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : un pequeño guión escrito en Perl. Haciendo su trabajo de manera rápida y eficiente. 1
  14. ssdeep : identifica archivos casi idénticos usando Context Triggered Piecewise Hashing
v2r
fuente
44
¿Alguno de estos programas puede encontrar carpetas duplicadas (no solo archivos duplicados?)
Anderson Green
3
@AndersonGreen rmlintpuede encontrar directorios duplicados. rmlint -T dd
oligofren
para Ubuntu, otra forma es abrir Archivos, buscar (control-f) para una extensión dada (por ejemplo, .mp3) y luego ordenar por nombre de archivo; esto permitirá eliminar duplicados a mano y, al mismo tiempo, mostrar la ubicación de los duplicados.
axd
6

Si su tarea de deduplicación está relacionada con la música, primero ejecute la aplicación picard para identificar y etiquetar correctamente su música (de modo que encuentre archivos .mp3 / .ogg duplicados incluso si sus nombres son incorrectos). Tenga en cuenta que picard también está disponible como un paquete de Ubuntu.

Hecho esto, con base en la musicip_puidetiqueta puedes encontrar fácilmente todas tus canciones duplicadas.

ΤΖΩΤΖΙΟΥ
fuente
4

Otro script que hace este trabajo es rmdupe . Desde la página del autor:

rmdupe utiliza comandos estándar de Linux para buscar archivos duplicados en carpetas especificadas, independientemente del nombre de archivo o la extensión. Antes de eliminar los candidatos duplicados, se comparan byte por byte. rmdupe también puede verificar duplicados en una o más carpetas de referencia, puede tirar basura a los archivos en lugar de eliminarlos, permite un comando de eliminación personalizado y puede limitar su búsqueda a archivos de tamaño especificado. rmdupe incluye un modo de simulación que informa lo que se hará para un comando dado sin eliminar realmente ningún archivo.

girardengo
fuente
3

Has probado

finddup

o

finddup -l

Supongo que funciona bien.

xerostomus
fuente
2

Para la identificación y eliminación de duplicados relacionados con la música, Picard y Jaikoz de http://musicbrainz.org/ es la mejor solución. Creo que Jaikoz etiqueta automáticamente su música en función de los datos del archivo de la canción. Ni siquiera necesita el nombre de la canción para identificarla y asignarle todos los metadatos. Aunque la versión gratuita solo puede etiquetar un número limitado de canciones en una ejecución, pero puede ejecutarla tantas veces como desee.

Yathi
fuente
2

Uso komparator - sudo apt-get install komparator( Ubuntu 10.04+ ) - como herramienta GUI para encontrar duplicados en modo manual.

N0rbert
fuente