2 votos

Comparar dos estructuras de carpetas y listar los archivos que existen en ambas, pero que son diferentes

Tengo una carpeta de trabajo local que refleja parte de la carpeta pública de un servidor web. Normalmente trabajo en la copia local y luego autocargo los archivos en el servidor al guardar. El problema es que últimamente me he dado cuenta de que muchos de los archivos de mi carpeta local parecen no estar actualizados, por lo que cada vez que guardo y subo un archivo, potencialmente estoy sobrescribiendo una versión más reciente. Esto es obviamente problemático, así que me gustaría tener todos los archivos locales desactualizados al día.

La mejor manera que se me ocurre para hacerlo es descargar toda la carpeta pública tal cual y comparar cada archivo con mi copia local, revisando manualmente los archivos con diferencias (comparándolos en Visual Studio Code). Sin embargo, la carpeta pública del servidor tiene unos 5GB de material extra que no necesito (o quiero) en mi carpeta de trabajo local, así que tendría que filtrar primero el material no deseado.

En otras palabras, estoy buscando una manera (GUI o terminal) para hacer lo siguiente:

  • Indique dos directorios de nivel superior como entrada
  • Recorrer recursivamente ambos directorios y seleccionar los archivos que existen en ambos (en la misma ubicación relativa)
  • Compara cada conjunto de archivos coincidentes y enumera aquellos en los que los dos archivos son no idéntico

¿Hay alguna forma razonablemente no compleja de hacerlo?

8voto

Puede utilizar diff para esto después de descargar la carpeta pública:

diff -q -r working-folder public-folder

Le dará la lista de archivos que son diferentes, omita -q para mostrar también una lista de las diferencias reales.

Para suprimir el listado de archivos sólo disponibles en public-folder puede filtrarlos fácilmente a través de grep :

diff -q -r working-folder public-folder | grep -v '^Only in public-folder'

(asegúrese de sustituir el public-folder parte con el nombre real en ambas ocurrencias)

0 votos

Pero, ¿no será esto también una lista de todos los archivos que existen en public-folder pero no en working-folder ? Eso es lo que estoy tratando de evitar, porque eso probablemente coincidiría con casi 50.000 archivos.

0 votos

@JanusBahsJacquet Ah, me lo perdí. Ver edición. No es elegante, pero como ejercicio puntual debería funcionar.

0 votos

Ah, qué inteligente, no se me había ocurrido pasarlo por la tubería así. Efectivamente, esto es algo puntual, así que la elegancia no es necesaria. Pero ¿"Sólo en" hace algo en grep? ¿Es algún tipo de sintaxis especial de grep que nunca he visto antes?

4voto

Douglas Puntos 10417

Aunque soy un gran partidario de utilizar las herramientas incorporadas (+1 por Respuesta de nohillside ) en lugar de buscar la aplicación más cercana, de vez en cuando encuentro aplicaciones realmente valiosas. En este caso, encontré una gráfico aplicación de diferenciación y fusión llamada Fusionar .

Meld es una herramienta visual de diferenciación y fusión dirigida a los desarrolladores. Meld le ayuda a comparar archivos, directorios y proyectos con control de versiones. Proporciona una comparación de dos y tres vías tanto de archivos como de directorios, y tiene soporte para muchos sistemas de control de versiones populares.

Meld Screenshot

Meld es probablemente excesivo para lo que buscas hacer, pero no tanto como para que el software sea engorroso de usar. Lo mejor es que es gratis (como la cerveza).

0 votos

¿Puedes añadir alguna aclaración sobre la afiliación (o no) a la aplicación? Gracias.

0 votos

@NimeshNeema, las palabras "encontré..." implican directamente que no tengo nada que ver con ellos más que "encontrarlos" y ahora recomendarlos.

0 votos

Culpa mía por no prestar atención al leer. A mí también me ha parecido útil la herramienta. Gracias por compartirla.

0voto

Mal Puntos 11

Pruebe DirEqual. Tiene una interfaz muy intuitiva.

0 votos

¿Podría proporcionar un enlace a lo que entiende por "DirEqual"?

0 votos

google.com/search?q=direqual pero acabo de descubrir que es sólo para Mac (no hay versión para Windows).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X