¿Qué herramientas de comparación de directorios puedo usar en OS X?
On febrero 10, 2021 by adminEstoy buscando una herramienta que pueda comparar directorios, no solo archivos. También es importante poder llamar a la herramienta desde la línea de comandos.
Sería genial tener una herramienta gratuita, si no es gratis, especifique el precio.
Answer
Para todos los googlers … echa un vistazo a las reglas de Beyond Compare . Cuesta 30 $ o 50 $ para la versión Pro.
Comentarios
- Normalmente trato de evitar recomendar soluciones comerciales cuando existen alternativas gratuitas y de código abierto, pero BeyondCompare es un caso especial donde vale cada centavo … y también es multiplataforma. Lo he estado usando durante más de 10 años y esperé mucho para obtener la versión de MacOS.
- Ahora es abril de 2020 y la versión pro ahora cuesta $ 60.
- I ‘ he probado todas las soluciones en esta página y creo que Beyond Compare es 100% la mejor y más valiosa recomendación.
Respuesta
FileMerge (gratis), enviado con Xcode, ofrece una vista de directorio.
Una versión de línea de comandos está disponible a través de la aplicación de Terminal opendiff.
Aquí le mostramos cómo puede comparar dos directorios con FileMerge:
- ⌘ + espacio, escriba «FileMerge» y ábralo.
- Haga clic en el botón «izquierdo» y elija la carpeta desde la que desea mover los elementos. (La carpeta «antigua»)
- Haga clic en el botón «derecho» y elija la carpeta que desee desea mover elementos A. (carpeta «nueva») y haga clic en el botón «Comparar»
- En el panel derecho, elija excluir: «idéntico» y «Cambiado a la derecha». De esta manera, solo y vea los archivos que faltan en la carpeta «nueva» e ignore los archivos que pueda haber agregado en la carpeta «nueva».
- Mueva los archivos manualmente en Finder o deje que FileMerge lo haga, eligiendo una opción en el Menú desplegable «Fusionar» en el panel derecho.
Comentarios
- Me gustaría elegir esta respuesta porque
opendiff
podría considerarse casi » empaquetado » con OS X pero cuando intento diferenciar dos carpetas, se abre un vista fea que no fue tan fácil de entender y tampoco pude ver cómo fusiono dos archivos en la vista de archivo. Estoy ‘ seguro de que es posible, pero si esta característica básica no es obvia, preferiré buscar algo mejor;) - FileMerge no es tan bueno como BeyondCompare, por mucho. Pero es gratis y por un requisito único que ‘ es el precio que estaba buscando 🙂
Respuesta
Utilidad incorporada para macOS y Linux
Si no le importa usar la terminal, la diff
puede comparar directorios.
Esta utilidad también está disponible en la mayoría de las distribuciones de Linux.
diff -rq directory1/ directory2/
-r
indica recursividad a través de subdirectorios, y -q
da una salida breve (es decir, no muestra las diferencias reales, solo observe qué archivos / directorios son diferentes).
Otras opciones útiles son:
-s
informar archivos idénticos,
-i
ignorar mayúsculas y minúsculas en el contenido del archivo,
--ignore-file-name-case
ignore el uso de mayúsculas y minúsculas al comparar nombres de archivos.
Si desea evitar advertencias (principalmente advertencias de utilidad) sobre diferencias en .DS_Store
archivos, luego use:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Comentarios
- Puede excluir subcarpetas directamente
diff --exclude node_modules
- Aún mejor, puede usar
diff -x node_modules
Responder
Diffmerge debería cumplir con todos sus requisitos.
Comentarios
- Solo espero que hagan un instalador que podrá instalar los iniciadores de línea de comandos y mejorar la experiencia de instalación actual.
- Este es un tema antiguo, pero lo instalé a través de
brew cask install diffmerge
y lo instalé sin problemas. - Abril de 2016: todavía se mantiene y sigue siendo una de mis herramientas de desarrollo preferidas.
- FWIW Probé
brew cask install diffmerge
hoy (junio de 2020) y cuando intenté ejecutar diffmerge recibí un cuadro de alerta que me decía que MacOS no ‘ no iba a ejecutar el programa porque no puede ‘ t verificar el desarrollador. (diffmerge no se ejecutó) - @MikeTheTall ¿No es ‘ t lo habitual en aplicaciones que no son de la tienda de aplicaciones? ¿Intentó presionar Ctrl y hacer clic directamente en el ícono de la aplicación y luego elegir
open
en el menú de acceso directo?
Responder
Otra buena herramienta para lograr esto es rsync, como se describe en Unix & Linux StackExchange .Para comparar dos carpetas, puede hacerlo
rsync -avun $SOURCE $TARGET
Y si realmente le preocupa la consistencia del archivo / descomposición de bits, también existe la opción c para comparar sumas de verificación de archivos
rsync -avnc $SOURCE $TARGET
Comentarios
- Gran referencia por su utilidad en todos los Unixes 🙏🏻.
Respuesta
Recientemente compré una copia de Kaleidoscope (aprox. 40 dólares estadounidenses). Es una aplicación limpia.
vimdiff también está disponible a través de la línea de comandos y es portátil en la mayoría de los dominios de UNIXy.
Comentarios
- Yo ‘ he estado usando Kaleidoscope durante algunos meses. Vale la pena el precio. Sale a la venta ocasionalmente.
- Kaleidoscope no te permite editar un archivo, ¡inútil!
- Precio de Kaleidoscope en App Store en 2020: 74,99 eur
Respuesta
Debería probar el potente software de código abierto meld . La versión para Mac se puede encontrar en Meld para OSX . Es compatible con la comparación de directorios y archivos y funciona muy bien en Mac.
Me dijeron que mejorara esto responde y explica por qué meld es bueno. En términos generales, Meld es un software de comparación de funciones completas que se utiliza principalmente en GNOME. Es mejor que muchos de los programas enumerados aquí porque
- es gratuito y de código abierto . Entonces yo u no necesita preocuparse por la tarifa o la seguridad
- si no es más poderoso, es tan sofisticado como un montón de software que le pide mucho dinero
- es el usuario- amigable y no implica una configuración compleja o un comando de escritura en el terminal. Debería poder usarlo inmediatamente una vez que lo instale.
La parte que no es tan buena puede ser que está desarrollado bajo GTK. Entonces, a veces no se siente como un programa MAC natural. Además, las versiones antiguas de MAC tenían algunos errores. Pero el último 3.19.2 que estoy usando actualmente funciona muy bien y nunca he encontrado un problema.
Comentarios
- También la instalación es fácil con
brew cask install meld
Responder
La herramienta de diferencias que viene con Text Wrangler de Bare Bones Software tiene una comparación de directorios, aunque solo muestra qué archivos están en ambos directorios y cuáles están solo en cada uno de los directorios. Cuando selecciona un archivo que está en ambos se puede editar combinando los cambios línea por línea con el clic de un botón. Sin embargo, no te permite mover archivos. Tienes que hacerlo de forma externa (por ejemplo, a través del Finder).
Creo que es una de las mejores opciones gratuitas.
Responder
Yo uso Folder Sync Cuesta $ 8.99 en el Mac App Store Funciona muy bien.
Respuesta
He estado comparando estructuras de carpetas grandes (DVD) en el pasado y había desarrollado una utilidad de línea de comandos para hacer esto. Recientemente hice que la utilidad (CrcCheckCopy) sea gratuita y multiplataforma (MacOS y Windows).
CrcCheckCopy escanea la carpeta de origen y crea un archivo que contiene los sellos CRC de todos los archivos. Luego, este archivo se usa para comparar la carpeta de destino.
Puede obtenerlo desde aquí: https://www.starmessagesoftware.com/crccheckcopy Apreciamos mucho sus comentarios.
Responder
Cambios en la aplicación ($ 37.19) solía ser mi trabajo rkforce para esto. Es tan bueno como Beyond Compare.
Nota: Espero que se permita que exista este control de calidad, aunque contradice al menos SO las normas para promover productos. La necesidad de una herramienta gráfica de comparación de directorios utilizable e intuitiva para macOS sigue siendo aguda. Los candidatos de código abierto no han alcanzado el nivel de usabilidad que brindan las herramientas comerciales.
Responda
Si sabe cómo ejecutar Python , aquí hay un script que escribí hace algún tiempo para comparar de manera eficiente dos directorios.
Características:
- puede comparar estructuras de árbol y cambios de archivo (según el tamaño del archivo & hash MD5)
- puede desactivar la comparación de archivos, mostrando solo cambios en la estructura de árbol (¡muy rápido!)
- puede desactivar la comparación de contenido de archivos , confiando solo en los cambios de tamaño del archivo (nuevamente, muy rápido)
- puede colorear la salida para una mejor legibilidad.
Y, naturalmente, puede modificar según sus necesidades, si sabe cómo programar.
#!/usr/bin/env python3 """ A script to recursively compare two directories (including file size and file hash changes) Usage: python3 compare_dirs.py DIR1 DIR2 """ import os, sys, hashlib COMPARE_FILES = True # should file sizes be compared if their names are the same? MD5 = True # should file hash sums be compared if their names and sizes are the same? COLORIZE = False # colorization for bash (only Linux & Unix) def md5sum(fn): hasher = hashlib.md5() with open(fn, "rb") as f: hasher.update(f.read()) return hasher.hexdigest() WHITE, RED, GREEN = 15, 196, 46 fg = lambda text, color: "\33[38;5;" + str(color) + "m" + text + "\33[0m" def compare_dirs(d1: "old directory name", d2: "new directory name"): def print_local(a, msg): text = "{} {} {}".format("DIR " if a[2] else "FILE", a[1], msg) if COLORIZE: color = {"added": GREEN, "removed": RED}.get(msg, WHITE) print(fg(text, color)) else: print(text) # Ensure validity for d in [d1,d2]: if not os.path.isdir(d): raise ValueError("not a directory: " + d) # Get relative path l1 = [(fn, os.path.join(d1, fn)) for fn in os.listdir(d1)] l2 = [(fn, os.path.join(d2, fn)) for fn in os.listdir(d2)] # Determine type: directory or file? l1 = sorted([(fn, pth, os.path.isdir(pth)) for fn, pth in l1]) l2 = sorted([(fn, pth, os.path.isdir(pth)) for fn, pth in l2]) i1 = i2 = 0 cnt = 0 common_dirs = [] while i1<len(l1) and i2<len(l2): if l1[i1][0] == l2[i2][0]: # same name if l1[i1][2] == l2[i2][2]: # same type if l1[i1][2]: # Pair of directories -> remember the name for recursion common_dirs.append((l1[i1][1], l2[i2][1])) elif COMPARE_FILES: # Pair of files -> compare their sizes size1 = os.stat(l1[i1][1]).st_size size2 = os.stat(l2[i2][1]).st_size if size1!=size2: print_local(l1[i1],"size changed: {:d} -> {:d}".format(size1, size2)) elif MD5: # Sizes are the same -> compare MD5 hashes if md5sum(l1[i1][1])!=md5sum(l2[i2][1]): print_local(l1[i1],"hash changed") else: print_local(l1[i1],"type changed") i1 += 1 i2 += 1 elif l1[i1][0]<l2[i2][0]: print_local(l1[i1],"removed") i1 += 1 elif l1[i1][0]>l2[i2][0]: print_local(l2[i2],"added") i2 += 1 cnt += 1 while i1<len(l1): print_local(l1[i1],"removed") i1 += 1 cnt += 1 while i2<len(l2): print_local(l2[i2],"added") i2 += 1 cnt += 1 # Compare subfolders recursively for sdir1,sdir2 in common_dirs: cnt += compare_dirs(sdir1, sdir2) return cnt if __name__=="__main__": print ("Comparing files {}abled".format("en" if COMPARE_FILES else "dis")) print ("MD5 checking {}abled".format("en" if MD5 else "dis")) print ("Colorization {}abled".format("en" if COLORIZE else "dis")) print (compare_dirs(sys.argv[1], sys.argv[2]), "items compared")
Enlace a GitHub Gist.
NOTA: no funcionará para los archivos o subdirectorios que se movieron a iCloud.
Respuesta
Más fácil solución: sincroniza el archivos usando Dropbox o similar, luego simplemente use WinMerge en Windows.
La utilidad FileMerge que viene con Xcode no compara carpetas y no fusiona / edita.
Deja una respuesta