¿Herramientas de Linux para encontrar archivos duplicados?

13

Tengo un conjunto grande y creciente de archivos de texto, que son bastante pequeños (menos de 100 bytes). Quiero diferenciar cada posible par de archivos y anotar cuáles son duplicados. Podría escribir un script de Python para hacer esto, pero me pregunto si hay una herramienta de línea de comandos de Linux existente (o tal vez una simple combinación de herramientas) que haga esto.

Actualización (en respuesta al comentario de mfinni ): todos los archivos están en un solo directorio, por lo que todos tienen nombres de archivo diferentes. (Pero todos tienen una extensión de nombre de archivo en común, lo que facilita la selección de todos con un comodín).

Daryl Spitzer
fuente
¿Asumo que los nombres de los archivos no son duplicados, solo los contenidos?
mfinni
pixelbeat.org/fslint si está buscando contenidos en el enlace anterior puede ayudarlo a hacerlo. :)
Rajat

Respuestas:

22

Ahí están los fdupes . Pero usualmente uso una combinación defind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36

Hubert Kario
fuente
1
Esta variación funcionó para mí: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (usé uniq -D, y prefiero xargs para encontrar -exec.)
Daryl Spitzer
+1 No estaba al tanto de fdupes, esa herramienta se ve muy útil.
Zoredache
3
@Daryl: el uso de xargsesta manera no funciona para nombres de archivo con espacios en blanco, -execpero el uso no funciona El uso -type fcomo argumento adicional para find(puede usarse junto con -name) restringe la búsqueda a archivos.
fuenfundachtzig
+1 para fdupes, ya que también es rápido para archivos binarios enormes.
Bengt
En algunas raras ocasiones he tenido xargs que no funcionan (fallan después de una cierta cantidad de archivos procesados) pero no encuentro -exec que funcionaba todo el tiempo. @fuenfundachtzig, uno puede usar xargs -0 --delimiter = "\ n" para manejar este tipo de archivos.
ychaouche
6

Bueno, existe FSlint, que no he usado para este caso en particular, pero debería poder manejarlo: http://en.flossmanuals.net/FSlint/Introduction

falsificador
fuente
+1 para FSlint. Interfaz muy intuitiva y potentes opciones de personalización.
Glutanimate
3

Es casi seguro que no desea diferenciar cada par de archivos. Probablemente quiera usar algo como md5sums para obtener todas las sumas de verificación de todos los archivos y canalizarlas en alguna otra herramienta que solo informará las sumas de verificación duplicadas.

Zoredache
fuente
2
Puede reducir el número de sumas md5 calculadas calculando solo md5sums para archivos que tienen un tamaño, para los cuales hay más de un archivo de ese tamaño. Por lo tanto, para todos los archivos que tienen un tamaño único en bytes, no necesita un md5sum, ya que no pueden ser duplicados de nada.
tomsv