Quels outils de comparaison dannuaires puis-je utiliser sur OS X?
On février 10, 2021 by adminJe recherche un outil capable de comparer des répertoires, pas seulement des fichiers. Il est également important de pouvoir appeler loutil à partir de la ligne de commande.
Ce serait formidable davoir un outil gratuit, sil nest pas gratuit, veuillez spécifier le prix.
Answer
Pour tous les googleurs … consultez les règles Beyond Compare . Coûte 30 $ ou 50 $ pour la version Pro.
Commentaires
- Jessaie généralement déviter de recommander une solution commerciale lorsquil existe des alternatives gratuites et open source mais BeyondCompare est un cas particulier où il vaut chaque centime … et est également multi-plateforme. Je lutilise depuis plus de 10 ans et jai attendu trop longtemps pour obtenir la version MacOS.
- Nous sommes maintenant en avril 2020 et la version pro coûte maintenant 60 $.
- I ‘ jai essayé toutes les solutions de cette page et je pense que Beyond Compare est à 100% la meilleure et la plus digne des recommandations.
Réponse
FileMerge (gratuit), livré avec Xcode, offre une vue de répertoire.
Une version en ligne de commande est disponible via lopendiff de lapplication Terminal.
Voici comment comparer deux répertoires avec FileMerge:
- ⌘ + espace, saisissez « FileMerge » et ouvrez-le.
- Cliquez sur le bouton «gauche» et choisissez le dossier à partir duquel vous souhaitez déplacer les éléments. (Lancien dossier)
- Cliquez sur le bouton «droit» et choisissez le dossier que vous souhaite déplacer des éléments vers. (« nouveau » dossier) et cliquez sur le bouton « Comparer »
- Dans le panneau de droite, choisissez dexclure: « identique » et « modifié à droite ». y voir les fichiers qui manquent dans le « nouveau » dossier et ignorer les fichiers que vous avez peut-être ajoutés dans le « nouveau » dossier.
- Déplacez les fichiers manuellement dans le Finder ou laissez FileMerge le faire, en choisissant une option dans le Liste déroulante « Fusionner » dans le panneau de droite.
Commentaires
- Je voudrais choisir cette réponse car
opendiff
pourrait être considéré comme presque » groupé » avec OS X mais quand jessaye de différencier deux dossiers, il a ouvert un vue moche qui nétait pas si facile à comprendre et je ne pouvais pas non plus voir comment fusionner deux fichiers dans la vue fichier. Je ‘ je suis sûr que cest possible mais si cette fonctionnalité de base nest pas évidente, je préférerai chercher quelque chose de mieux;) - FileMerge nest pas aussi bon que BeyondCompare, de loin. Mais cest gratuit, et pour une exigence unique que ‘ est le prix que je recherchais 🙂
Répondre
Utilitaire intégré pour macOS et Linux
Si cela ne vous dérange pas dutiliser le terminal, le diff
peut comparer des répertoires.
Cet utilitaire est également disponible dans la plupart des distributions Linux.
diff -rq directory1/ directory2/
-r
indique recurse via les sous-répertoires, et -q
donne une brève sortie (cest-à-dire ne pas afficher les différences réelles, notez simplement quels fichiers / répertoires sont différents).
Dautres options utiles sont:
-s
signaler les fichiers identiques,
-i
ignorer la casse dans le contenu du fichier,
--ignore-file-name-case
ignore la casse lors de la comparaison des noms de fichiers.
Si vous voulez éviter les avertissements (surtout les avertissements dutilité) concernant les différences dans les .DS_Store
fichiers, puis utilisez:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Commentaires
- Vous pouvez exclure des sous-dossiers directement par
diff --exclude node_modules
- Encore mieux, vous peut utiliser
diff -x node_modules
Answer
Diffmerge devrait répondre à toutes vos exigences.
Commentaires
- Jespère juste quils feront un installateur qui pourra installer les démarreurs de ligne de commande et améliorer lexpérience dinstallation actuelle.
- Cest un ancien sujet – mais je lai installé via
brew cask install diffmerge
et il a été installé sans problème. - Avril 2016: il est toujours maintenu, et toujours lun de mes outils de développement préférés.
- FWIW Jai essayé
brew cask install diffmerge
aujourdhui (juin 2020) et quand jai essayé dexécuter diffmerge, jai reçu une boîte dalerte mindiquant que MacOS nallait pas ‘ exécuter le programme car il peut ‘ t vérifier le développeur. (diffmerge na pas fonctionné) - @MikeTheTall Nest ‘ que dhabitude pour les applications qui ne proviennent pas de lApp Store? Avez-vous essayé directement Ctrl-clic sur licône de lapplication, puis choisissez
open
dans le menu contextuel?
Réponse
Un autre outil intéressant pour y parvenir est rsync, comme décrit sur Unix & Linux StackExchange .Pour comparer deux dossiers, vous pouvez faire
rsync -avun $SOURCE $TARGET
Et si vous êtes vraiment préoccupé par la cohérence des fichiers / la pourriture des bits, il y a aussi loption c pour comparer les sommes de contrôle des fichiers
rsync -avnc $SOURCE $TARGET
Commentaires
- Excellente référence pour son utilité sur tous les Unix 🙏🏻.
Réponse
Jai récemment acheté une copie de Kaleidoscope (environ 40 $ US). Cest une application propre.
vimdiff est également disponible via la ligne de commande et est portable sur la plupart des domaines UNIXy.
Commentaires
- Je ‘ utilise Kaleidoscope depuis quelques mois maintenant. Ça vaut le prix. Il est en vente occasionnellement.
- Kaleidoscope ne vous permet pas déditer un fichier, inutile!
- Prix de Kaleidoscope dans lApp Store en 2020: 74,99 eur
Réponse
Vous devriez essayer le puissant logiciel open-source meld . La version Mac peut être trouvé à Meld pour OSX . Il prend en charge la comparaison de répertoires et de fichiers et fonctionne très bien sous Mac.
On ma dit daméliorer cela répondez et expliquez pourquoi meld est bon. De manière générale, Meld est un logiciel de comparaison de fonctionnalités complet principalement utilisé dans GNOME. Il est meilleur que beaucoup de logiciels répertoriés ici car
- il est gratuit et open source . Alors yo vous navez pas besoin de vous soucier des frais ou de la sécurité
- sinon plus puissant, il est aussi sophistiqué que beaucoup de logiciels qui vous demandent beaucoup dargent
- cest lutilisateur- convivial et nimplique pas de configuration complexe ou de commande de saisie dans le terminal. Vous devriez pouvoir lutiliser immédiatement une fois que vous lavez installé.
La partie qui nest pas aussi bonne peut être quil est développé sous GTK. Alors parfois, cela ne ressemble pas à des programmes MAC nature. De plus, les anciennes versions de MAC étaient un peu boguées. Mais la dernière version 3.19.2 que jutilise actuellement fonctionne très bien et je nai jamais rencontré de problème.
Commentaires
- Linstallation est également facile avec
brew cask install meld
Réponse
Loutil de comparaison fourni avec Le Text Wrangler de Bare Bones Software a une comparaison de répertoires, bien quil montre uniquement quels fichiers se trouvent dans les deux répertoires et lesquels se trouvent uniquement dans chacun des répertoires. Lorsque vous sélectionnez un fichier qui est dans les deux, vous pouvez éditer en fusionnant les modifications ligne par ligne avec le clic dun bouton. Il ne vous permet pas de déplacer des fichiers. Vous devez le faire en externe (par exemple via Finder).
Je trouve que cest lune des meilleures options gratuites.
Réponse
Jutilise Folder Sync Il en coûte 8,99 $ sur le Mac App Store Cela fonctionne vraiment bien.
Réponse
Jai comparé de grandes structures de dossiers (DVD) dans le passé et javais développé un utilitaire de ligne de commande pour ce faire. Jai récemment rendu lutilitaire (CrcCheckCopy) gratuit et multiplateforme (MacOS et Windows).
CrcCheckCopy scanne le dossier source et crée un fichier contenant les tampons CRC de tous les fichiers. Ensuite, ce fichier est utilisé pour comparer le dossier cible.
Vous pouvez lobtenir à partir dici: https://www.starmessagesoftware.com/crccheckcopy Vos commentaires vous seront très appréciés.
Réponse
Modifications de lapplication (37,19 $) était mon wo rkforce pour cela. Cest aussi bon que Beyond Compare.
Note: Jespère que ce QA est autorisé à exister, même si cest contre au moins les normes SO de présenter des produits. Le besoin dun outil de comparaison de répertoires graphique utilisable et intuitif pour macOS reste aigu. Les candidats open source nont pas atteint le niveau de convivialité fourni par les outils commerciaux.
Réponse
Si vous savez comment exécuter Python , voici un script que jai écrit il y a quelque temps pour comparer efficacement deux répertoires.
Caractéristiques:
- il peut comparer les arborescences et les changements de fichiers (en fonction de la taille du fichier & hachages MD5)
- peut désactiver la comparaison de fichiers, en affichant uniquement les modifications de larborescence (très rapide!)
- peut désactiver la comparaison du contenu des fichiers , en se basant uniquement sur les changements de taille de fichier (encore une fois, très rapides)
- peut coloriser la sortie pour une meilleure lisibilité.
Et, naturellement, peut modifier selon vos besoins, si vous savez programmer.
#!/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")
Lien vers GitHub Gist.
REMARQUE: cela ne fonctionnera pas pour les fichiers ou sous-répertoires qui ont été déplacés vers iCloud.
Réponse
Le plus simple solution: synchronisez le fichiers en utilisant Dropbox ou similaire, puis utilisez simplement WinMerge sous Windows.
Lutilitaire FileMerge fourni avec Xcode ne compare pas les dossiers et ne fait pas de fusion / édition.
Laisser un commentaire