Compara el contenido de dos carpetas, incluidas las subcarpetas

A lo largo de los años, he importado fotos de iPhone a Mac y las he organizado en carpetas por mes.

Ahora quiero importar todas las fotos que tengo en el iPhone y compararlas con los archivos que he organizado en carpetas a lo largo de los años, si falta alguna.

¿Hay alguna herramienta (incluida en OSX o gratuita/comprable) u otro procedimiento que pueda comparar el contenido de la carpeta, con una carpeta que contiene los archivos en la raíz y la otra en muchas subcarpetas?

¿Comparar qué? número de archivos, tamaño, tipo, contenido?
Comparar la existencia de archivos, si faltan/duplicados.
Eso puedes hacerlo con el simple comando de Terminal "diff -rq carpeta1 carpeta2"
Mucho relacionado con la pregunta 10252 .

Respuestas (2)

Terminal: diferencial

Puede comparar dos carpetas en Terminal usando el siguiente comando:

diff -rq /path/to/folder1 /path/to/folder2

Para ignorar la jerarquía de carpetas, puede copiar todos los archivos de una carpeta a una tercera carpeta y luego compararlos:

find /path/to/folder2 -mindepth 2 -type f -print -exec cp {} /path/to/folder3 \;
¿Cómo verificaría todos los archivos en una carpeta, incluidos los de las subcarpetas? Las subcarpetas no serán las mismas en las carpetas principales de comparación.
@Numbers Creo que no entendí bien tu pregunta; No creo que puedas hacer eso, pero primero puedes copiar todas las fotos de las subcarpetas en una sola segunda carpeta para comparar. Por supuesto, esto depende de cuántas fotos tengas.
Son 25 GB y 100 carpetas y me gustaría mantenerlas en las carpetas. Pero encontraré una manera.
@Numbers Entiendo que desea mantenerlos en carpetas; quise copiarlos solo para la comparación, luego elimine los copiados. Por ejemplo, ejecutar algo como find /path/to/folder2 -mindepth 2 -type f -print -exec cp {} /path/to/folder3 \;, luego la diferencia y luego eliminar la carpeta 3.

Me doy cuenta de que este es un hilo antiguo, pero parece que la pregunta no se respondió por completo. Me encontré con esto antes de tratar de averiguar más o menos las mismas cosas por mí mismo, así que pensé en publicar una opción en caso de que otros se topen con ella...

Algunas de las respuestas estaban casi allí... y la mía podría hacerse más fácilmente, ¡pero funciona!

Esto creará un archivo con todos los nombres de tus fotos:

find /Ruta/a/la/carpeta superior/de/fotos -min depth 2 -type f -print | sed 's/^.*///' | ordenar > /tmp/fotos-de-carpetas

Si alguno está en carpetas que pertenecen a otros, anteponga sudo y use >> para agregar esos nombres de archivo a los que ya están en el archivo inicial.

use un comando similar para crear un segundo archivo que contenga todos los nombres de archivo de las fotos de su teléfono.

Puede hacer una diferencia y enviar a un archivo con > o, si sabe qué conjunto es el más grande, utilícelo como archivo1 y haga

diferencia archivo1 archivo2 | egrep -v '<' > salida de archivo

Por supuesto, todas las rutas han sido eliminadas por el sed en la búsqueda inicial para generar solo los nombres de archivo. Si ve algo que podría faltar, quiere saber dónde está, así que use

sudo find /Ruta/a/la/carpeta superior/de/fotos -name 'nombre-de-archivo-que-quieres' -ls

y eso te dirá dónde está.

Espero que esto ayude. Me ayudé a averiguar lo que necesito conservar de un antiguo directorio de inicio mío que no está en mi nuevo directorio de inicio. ¡65 GB de espacio ahorrado!