Welke hulpprogrammas voor het vergelijken van mappen kan ik gebruiken in OS X?
Geplaatst op februari 10, 2021 door adminIk ben op zoek naar een tool die mappen kan vergelijken, niet alleen bestanden. Het is ook belangrijk om de tool vanaf de commandoregel te kunnen aanroepen.
Het zou geweldig zijn om een gratis tool te hebben, indien niet gratis, specificeer dan de prijs.
Answer
Voor alle googlers … bekijk Beyond Compare het regeert. Kost 30 $ of 50 $ voor Pro-versie.
Opmerkingen
- Ik probeer meestal geen commerciële oplossing aan te bevelen als er gratis en open source-alternatieven bestaan, maar BeyondCompare is een speciaal geval waar het elke cent waard is … en ook multi-platform is. Ik gebruik het al meer dan 10 jaar en heb te lang gewacht om de MacOS-versie te krijgen.
- Het is nu april 2020 en de pro-versie kost nu $ 60.
- I ‘ we hebben alle oplossingen op deze pagina geprobeerd en ik denk dat Beyond Compare 100% de beste en meest waardige aanbeveling is.
Antwoord
FileMerge (gratis), geleverd met Xcode, biedt een directoryweergave.
Een opdrachtregelversie is beschikbaar via de Terminal applicatie opendiff.
Hier is hoe je twee mappen kunt vergelijken met FileMerge:
- ⌘ + spatie, typ “FileMerge” en open het.
- Klik op de “linker” knop en kies de map waaruit je items wilt verplaatsen VANUIT. (de “oude” map)
- Klik op de “rechter” knop en kies de map waar je wil items NAAR. (“nieuwe” map) verplaatsen en klik op de knop “Vergelijken”.
- Kies in het rechterpaneel om uit te sluiten: “identiek” en “Rechts gewijzigd”. Op deze manier y zie bestanden die ontbreken in de “nieuwe” map en negeer bestanden die u mogelijk heeft toegevoegd in de “nieuwe” map.
- Verplaats bestanden handmatig in Finder of laat FileMerge het doen door een optie te kiezen in de Vervolgkeuzelijst “Samenvoegen” in het rechterdeelvenster.
Opmerkingen
- Ik zou dit antwoord willen kiezen omdat
opendiff
kan worden beschouwd als bijna ” gebundeld ” met OS X, maar als ik twee mappen probeer te onderscheiden, opende het een lelijke weergave die niet zo gemakkelijk te begrijpen was en ik kon ook niet zien hoe ik twee bestanden samenvoeg in de bestandsweergave. Ik ‘ weet zeker dat het mogelijk is, maar als deze basisfunctie niet voor de hand ligt, ga ik liever op zoek naar iets beters;) - FileMerge is niet zo goed als BeyondCompare, bij lange na. Maar het is gratis, en voor een eenmalige vereiste dat ‘ de prijs is waarnaar ik op zoek was 🙂
Antwoord
Ingebouwd hulpprogramma voor macOS en Linux
Als je het niet erg vindt om de terminal te gebruiken, de diff
commando kan mappen vergelijken.
Dit hulpprogramma is ook beschikbaar in de meeste Linux-distributies.
diff -rq directory1/ directory2/
-r
geeft recurse aan via submappen, en -q
geeft een korte uitvoer (dwz laat de werkelijke verschillen niet zien, noteer gewoon welke bestanden / mappen verschillend zijn).
Andere handige opties zijn:
-s
rapporteer identieke bestanden,
-i
negeer hoofdlettergebruik in bestandsinhoud,
--ignore-file-name-case
negeer hoofdlettergebruik bij het vergelijken van bestandsnamen.
Als u waarschuwingen (meestal bruikbaarheidswaarschuwingen) over verschillen in de .DS_Store
bestanden, gebruik dan:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Reacties
- U kunt submappen rechtstreeks uitsluiten door
diff --exclude node_modules
- Nog beter, u kan
diff -x node_modules
Answer
Diffmerge zou aan al uw vereisten moeten voldoen.
Opmerkingen
- Ik hoop alleen dat ze een installatieprogramma zullen maken die de starters van de opdrachtregel kunnen installeren en de huidige installatie-ervaring verbeteren.
- Dit is een oud onderwerp – maar ik heb het geïnstalleerd via
brew cask install diffmerge
en het is geïnstalleerd zonder problemen. - April 2016: het wordt nog steeds onderhouden en is nog steeds een van mijn favoriete ontwikkeltools.
- FWIW Ik heb geprobeerd
brew cask install diffmerge
vandaag (juni 2020) en toen ik probeerde diffmerge uit te voeren, kreeg ik een waarschuwingsvenster waarin stond dat MacOS het programma niet ‘ ging uitvoeren omdat het ‘ t verifieer de ontwikkelaar. (diffmerge is niet gestart) - @MikeTheTall Isn ‘ t wat gebruikelijk is voor apps die niet uit de app store komen? Heb je rechtstreeks Ctrl-klik op het app-pictogram geprobeerd en vervolgens
open
uit het snelmenu gekozen?
Beantwoorden
Een andere handige tool om dit te bereiken is rsync, zoals beschreven op Unix & Linux StackExchange .Om twee mappen te vergelijken kun je doen
rsync -avun $SOURCE $TARGET
En als je je echt zorgen maakt over bestandsconsistentie / bitrot, is er ook de optie c om bestandscontrolesommen te vergelijken
rsync -avnc $SOURCE $TARGET
Reacties
- Geweldige referentie voor zijn bruikbaarheid op alle Unixen 🙏🏻.
Answer
Ik heb onlangs een exemplaar gekocht van Kaleidoscope (ongeveer $ 40 US). Het is een schone app.
vimdiff is ook beschikbaar via de opdrachtregel en is draagbaar over de meeste UNIXy-domeinen.
Opmerkingen
- Ik ‘ gebruik Kaleidoscope nu een paar maanden. De prijs waard. Het wordt af en toe in de uitverkoop gedaan.
- Kaleidoscope staat je niet toe om een bestand te bewerken, nutteloos!
- Prijs van Kaleidoscope in App Store in 2020: 74,99 EUR
Answer
Probeer de krachtige open-source software meld . De Mac-versie is te vinden op Meld voor OSX . Het ondersteunt zowel directory- als bestandsvergelijking en werkt uitstekend onder Mac.
Mij werd verteld dit te verbeteren antwoord en leg uit waarom meld goed is. Over het algemeen is Meld een vergelijkingssoftware met volledige functionaliteit die voornamelijk wordt gebruikt in GNOME. Het is beter dan veel van de hier vermelde software omdat het gratis en open source is. Dus ja u hoeft zich geen zorgen te maken over de vergoeding of beveiliging
Het deel dat het niet zo goed is, zou kunnen zijn dat het ontwikkeld is onder GTK. Dus soms voelt het niet als natuur-MAC-programmas. Bovendien waren de oude MAC-versies een beetje buggy. Maar de nieuwste versie 3.19.2 die ik momenteel gebruik, werkt prima en ik ben nog nooit een probleem tegengekomen.
Opmerkingen
- Ook de installatie is eenvoudig met
brew cask install meld
Antwoord
De diff-tool die wordt geleverd met Bare Bones Softwares Text Wrangler heeft directoryvergelijking, hoewel het alleen laat zien welke bestanden in beide mappen staan en welke alleen in elk van de mappen. Wanneer u selecteert een bestand dat zich in beide bevindt, kunt u bewerken door de wijzigingen regel voor regel samen te voegen met een klik op de knop. U kunt er echter geen bestanden mee verplaatsen. U moet dit extern doen (bijvoorbeeld via Finder).
Ik vind het een van de betere gratis opties.
Antwoord
Ik gebruik Folder Sync Het kost $ 8,99 op de Mac App Store Het werkt heel goed.
Answer
Ik heb grote mapstructuren (dvds) vergeleken in het verleden en ik had hiervoor een opdrachtregelhulpprogramma ontwikkeld. Ik heb onlangs het hulpprogramma (CrcCheckCopy) gratis en platformonafhankelijk (MacOS en Windows) gemaakt.
CrcCheckCopy scant de bronmap en maakt een bestand met de CRC-stempels van alle bestanden. Vervolgens wordt dit bestand gebruikt om de doelmap te vergelijken.
U kunt het hier vandaan halen: https://www.starmessagesoftware.com/crccheckcopy Je feedback wordt zeer gewaardeerd.
Antwoord
Veranderingen app ($ 37,19) was vroeger mijn wo rkforce hiervoor. Het is zo goed als Beyond Compare.
Opmerking: ik hoop dat deze QA mag bestaan, hoewel het op zijn minst tegen de SO-normen is om voor producten te pitchen. De behoefte aan een bruikbare, intuïtieve, grafische directoryvergelijkingstool voor macOS blijft acuut. Open source kandidaten hebben nog niet het niveau van bruikbaarheid bereikt dat de commerciële tools bieden.
Answer
Als je weet hoe je Python moet draaien , hier is een script dat ik enige tijd geleden heb geschreven om efficiënt twee mappen te vergelijken.
Functies:
- het kan boomstructuren en bestandswijzigingen vergelijken (gebaseerd op bestandsgrootte & MD5-hashes)
- kan bestandsvergelijking uitschakelen, waarbij alleen boomstructuurwijzigingen worden weergegeven (erg snel!)
- kan vergelijking van bestandsinhoud uitschakelen , alleen vertrouwend op wijzigingen in de bestandsgrootte (nogmaals, heel snel)
- kan de uitvoer inkleuren voor betere leesbaarheid.
En, uiteraard, aanpassen aan uw behoeften, als je weet hoe je moet programmeren.
#!/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")
Link naar GitHub Gist.
OPMERKING: het werkt niet voor de bestanden of submappen die naar de iCloud zijn verplaatst.
Antwoord
Gemakkelijkste oplossing: synchroniseer het bestanden met Dropbox of iets dergelijks, gebruik dan WinMerge op Windows.
Het FileMerge-hulpprogramma dat bij Xcode wordt geleverd, vergelijkt geen mappen en voegt niet samen / bewerkt niet.
Geef een reactie