¿Cómo puedo eliminar archivos duplicados en árboles de directorios separados?

10

Tengo dos directorios: old/y new/. Algunos de los archivos en old/son duplicados de aquellos en new/. Algunos simplemente tienen el mismo nombre, y algunos incluso pueden tener contenido idéntico pero nombres diferentes. No estoy interesado en la ruta del subdirectorio a los archivos, por lo que solo un nombre de archivo no calificado debe considerarse en la coincidencia.

Quiero eliminar los archivos duplicados old/, para que solo contenga archivos que no se encuentran también en new/. Para los casos en que los nombres de archivo coinciden, pero no los contenidos, o viceversa, quiero que esto aparezca en algún registro.

¿Alguien ha encontrado un problema similar o tiene una solución mejor que hackear un script (perl o similar) desde cero? Un tiempo de ejecución dominado por la invocación md5sumde cada archivo es aceptable.

Tuercas P
fuente

Respuestas:

7

¡Por supuesto! Echa un vistazo a FSlint :

FSlint es una utilidad para buscar y limpiar varias formas de pelusa en un sistema de archivos. IE cruft no deseado o problemático en sus archivos o nombres de archivo. Por ejemplo, una forma de pelusa que encuentra es archivos duplicados. Tiene modos GUI y línea de comandos.

texto alternativo

FSlint es un software gratuito y de código abierto.

John T
fuente
Eso se ve lo suficientemente cerca para lo que quiero. ¡Gracias!
P-Nuts
8

fdupes : encuentra archivos duplicados en un conjunto dado de directorios

fdupes new/ old/

-d para borrar

-N para no preguntar

fdupes -N -d new/ old/
Cristian Ciupitu
fuente
¿Esto también no encontrará (y eliminará) duplicados dentro de cada directorio? En otras palabras, si los archivos nuevos (o antiguos) contienen archivos duplicados que pueden o no encontrarse dentro de los antiguos, ¿también se eliminarían? No creo que fdupes sea estrictamente un programa diferente como lo implican sus argumentos "nuevo" y "viejo".
Stephen Niedzielski el