Hvilke værktøjer til katalogsammenligning kan jeg bruge på OS X?
On februar 10, 2021 by adminJeg leder efter et værktøj, der er i stand til at sammenligne mapper, ikke kun filer. Det er også vigtigt at kunne ringe til værktøjet fra kommandolinjen.
Det ville være dejligt at have et gratis værktøj, hvis ikke gratis, angiv prisen.
Svar
For alle googlere … tjek Beyond Compare reglerne. Omkostninger 30 $ eller 50 $ for Pro-versionen.
Kommentarer
- Jeg forsøger normalt at undgå at anbefale kommerciel løsning, når der findes gratis og open source-alternativer, men BeyondCompare er et specielt tilfælde, hvor det er værd at hver øre … og også er multi-platform. Jeg har brugt det i mere end 10 år og ventede længe på at få MacOS-versionen.
- Det er nu april 2020, og pro-versionen koster nu $ 60.
- I ‘ har prøvet alle løsningerne på denne side, og jeg synes, Beyond Compare er 100% den bedste og mest værdige anbefaling.
Svar
FileMerge (gratis), leveret med Xcode, tilbyder en mappevisning.
En kommandolinieversion er tilgængelig via Terminal-applikationen opendiff.
Her kan du sammenligne to mapper med FileMerge:
- ⌘ + mellemrum, skriv “FileMerge” og åbn den.
- Klik på knappen “venstre”, og vælg den mappe, du vil flytte emner fra. (Den “gamle” mappe)
- Klik på knappen “højre”, og vælg den mappe, du vil flytte emner til. (“ny” mappe) og klikke på “Sammenlign” -knap
- I højre panel skal du vælge at ekskludere: “identisk” og “Ændret til højre”. På denne måde vil du kun y se filer, der mangler i den “nye” mappe, og ignorere filer, som du muligvis har tilføjet i den “nye” mappe.
- Flyt filer manuelt i Finder, eller lad FileMerge gøre det ved at vælge en indstilling i Rullemenuen “Flet” i højre panel.
Kommentarer
- Jeg vil gerne vælge dette svar, fordi
opendiff
kunne betragtes som næsten ” bundtet ” med OS X, men når jeg prøver at adskille to mapper, åbnede den en grim visning, der ikke var så let at forstå, og jeg kunne heller ikke se, hvordan jeg fletter to filer i filvisning. Jeg ‘ er sikker på, at det er muligt, men hvis denne grundlæggende funktion ikke er åbenbar, foretrækker jeg at se efter noget bedre;) - FileMerge er ikke så god som BeyondCompare, med et langt skud. Men det er gratis og for et engangskrav, at ‘ er den pris, jeg ledte efter 🙂
Svar
Indbygget hjælpeprogram til macOS og Linux
Hvis du ikke har noget imod at bruge terminalen, er diff
kommandoen kan sammenligne kataloger.
Dette værktøj er også tilgængeligt i de fleste Linux-distributioner.
diff -rq directory1/ directory2/
-r
angiver tilbagekaldelse gennem underkataloger, og -q
giver kort output (dvs. viser ikke de faktiske forskelle, bemærk bare hvilke filer / dirs der er forskellige).
Andre nyttige indstillinger er:
-s
rapporterer identiske filer,
-i
ignorerer store og små bogstaver i filindholdet,
--ignore-file-name-case
ignorer sagen, når du sammenligner filnavne.
Hvis du vil undgå advarsler (for det meste brugsadvarsler) om forskelle i .DS_Store
filer, og brug derefter:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Kommentarer
- Du kan ekskludere undermapper direkte ved
diff --exclude node_modules
- Endnu bedre, du kan bruge
diff -x node_modules
Svar
Diffmerge skal opfylde alle dine krav.
Kommentarer
- Jeg håber bare, at de opretter et installationsprogram der vil være i stand til at installere kommandolinjestarterne og forbedre den aktuelle installationsoplevelse.
- Dette er et gammelt emne – men jeg installerede det via
brew cask install diffmerge
og det installerede uden problemer. - Apr 2016: Det vedligeholdes stadig og stadig et af mine go-to-udviklingsværktøjer.
- FWIW Jeg prøvede
brew cask install diffmerge
i dag (juni 2020), og da jeg forsøgte at køre diffmerge, fik jeg en advarselsboks, der fortæller mig, at MacOS ikke ‘ ikke kører programmet, fordi det kan ‘ t bekræft udvikleren. (diffmerge kørte ikke) - @MikeTheTall Er ‘ ikke det sædvanlige for apps, der ikke er fra app store? Forsøgte du direkte Ctrl-klik på appikonet og derefter vælge
open
i genvejsmenuen?
Svar
Et andet pænt værktøj til at opnå dette er rsync, som beskrevet på Unix & Linux StackExchange .For at sammenligne to mapper kan du gøre
rsync -avun $SOURCE $TARGET
Og hvis du virkelig er bekymret for filkonsistens / bitrot, er der også c mulighed for at sammenligne filkontrolsummer
rsync -avnc $SOURCE $TARGET
Kommentarer
- Stor reference for dets anvendelighed på alle Unix 🙏🏻.
Svar
Jeg købte for nylig en kopi af Kalejdoskop (ca. $ 40 US). Det er en ren app.
vimdiff er også tilgængelig via kommandolinjen og er bærbar på tværs af de fleste UNIXy-domæner.
Kommentarer
- Jeg ‘ har brugt kalejdoskop i et par måneder nu. Prisen er værd. Den sælges lejlighedsvis.
- Kalejdoskop tillader dig ikke at redigere en fil, ubrugelig!
- Kalejdoskoppris i App Store i 2020: 74,99 euro
Svar
Du skal prøve den kraftfulde open source-software meld . Mac-versionen kan findes på Meldt til OSX . Det understøtter både sammenligning af biblioteker og filer og fungerer godt under Mac.
Jeg fik at vide at forbedre dette besvare og forklare, hvorfor meld er god. Generelt set er Meld en komplet funktionssammenligningssoftware, der hovedsagelig bruges i GNOME. Det er bedre end en masse software, der er anført her, fordi
- det er gratis og open source Så ja u behøver ikke bekymre dig om gebyret eller sikkerheden
- hvis ikke mere kraftfuldt, det er så sofistikeret som en masse software, der beder dig om en masse penge
- det er bruger- venlig og involverer ikke kompleks konfiguration eller skrivekommando i terminalen. Du skal kunne bruge den med det samme, når du har installeret den.
Den del, at den ikke er så god, kan være, at den er udviklet under GTK. Så nogle gange føles det ikke som natur-MAC-programmer. Desuden var de gamle MAC-versioner lidt buggy. Men den seneste 3.19.2, som jeg bruger i øjeblikket, fungerer godt, og jeg har aldrig mødt et problem.
Kommentarer
- Installation er også let med
brew cask install meld
Svar
Det diff-værktøj, der følger med Bare Bones-software Text Wrangler har sammenligning af biblioteker, selvom det kun viser, hvilke filer der er i begge mapper, og hvilke der kun er i hver af mapperne. Når du vælger en fil, der findes i begge, kan du redigere ved at flette ændringer linje for linje med et klik på en knap. Det giver dig dog ikke mulighed for at flytte filer. Du skal gøre dette eksternt (f.eks. Via Finder).
Jeg finder det at være en af de bedre gratis muligheder.
Svar
Jeg bruger Folder Sync Det koster $ 8,99 på Mac App Store Det fungerer rigtig godt.
Svar
Jeg har sammenlignet store mappestrukturer (DVDer) tidligere, og jeg havde udviklet et kommandolinjeprogram til at gøre dette. Jeg har for nylig gjort hjælpeprogrammet (CrcCheckCopy) gratis og på tværs af platforme (MacOS og Windows).
CrcCheckCopy scanner kildemappen og opretter en fil, der indeholder CRC-stemplerne for alle filer. Derefter bruges denne fil til at sammenligne målmappen.
Du kan få den herfra: https://www.starmessagesoftware.com/crccheckcopy Din feedback bliver meget værdsat.
Svar
Ændringsapp ($ 37,19) plejede at være min wo rkforce til dette. Det er lige så godt som Beyond Compare.
Bemærk: Jeg håber, at denne kvalitetssikring får lov til at eksistere, selvom det er i det mindste imod SO-normer for at slå efter produkter. Behovet for et brugbart, intuitivt grafisk sammenligningsværktøj til macOS er fortsat akut. Open source-kandidater har ikke nået det anvendelighedsniveau, som de kommercielle værktøjer leverer.
Svar
Hvis du ved, hvordan du kører Python , her er et script, som jeg skrev for nogen tid siden for effektivt at sammenligne to mapper.
Funktioner:
- det kan sammenligne træstrukturer og filændringer (baseret på filstørrelse & MD5 hashes)
- kan deaktivere filsammenligning, viser kun træstrukturændringer (meget hurtigt!)
- kan deaktivere sammenligning af filindhold , der kun er afhængig af ændringer i filstørrelse (igen, meget hurtigt)
- kan farve output for bedre læsbarhed.
Og kan naturligvis ændre efter dine behov, hvis du ved, hvordan du programmerer.
#!/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 til GitHub Gist.
BEMÆRK: det fungerer ikke for de filer eller underkataloger, der blev flyttet til iCloud.
Svar
Nemmest løsning: Synkroniser filer ved hjælp af Dropbox eller lignende, så brug bare WinMerge på Windows.
FileMerge-værktøjet, der leveres med Xcode, sammenligner ikke mapper og fletter / redigerer ikke.
Skriv et svar