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).
Respuestas:
Ahí están los fdupes . Pero usualmente uso una combinación de
find . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36
fuente
find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34
(usé uniq -D, y prefiero xargs para encontrar -exec.)xargs
esta manera no funciona para nombres de archivo con espacios en blanco,-exec
pero el uso no funciona El uso-type f
como argumento adicional parafind
(puede usarse junto con-name
) restringe la búsqueda a archivos.Bueno, existe FSlint, que no he usado para este caso en particular, pero debería poder manejarlo: http://en.flossmanuals.net/FSlint/Introduction
fuente
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.
fuente