Ce instrumente de comparare a directorului pot folosi pe OS X?
On februarie 10, 2021 by adminCaut un instrument care să poată compara directoare, nu numai fișiere. De asemenea, este important să puteți apela instrumentul din linia de comandă.
Ar fi minunat să aveți un instrument gratuit, dacă nu gratuit, vă rugăm să specificați prețul.
Răspuns
Pentru toți Google … consultați Beyond Compare regulile. Costă 30 $ sau 50 $ pentru versiunea Pro.
Comentarii
- De obicei, încerc să evit recomandarea unei soluții comerciale atunci când există alternative gratuite și open source, dar BeyondCompare este un caz special în care merită fiecare bănuț … și este, de asemenea, cu mai multe platforme. Îl folosesc de mai mult de 10 ani și am așteptat mult pentru a obține versiunea MacOS.
- Acum este aprilie 2020, iar versiunea pro costă acum 60 USD.
- I ‘ Am încercat toate soluțiile de pe această pagină și cred că Beyond Compare este 100% cea mai bună și mai demnă recomandare.
Răspuns
FileMerge (gratuit), livrat cu Xcode, oferă o vizualizare director.
O versiune de linie de comandă este disponibil prin intermediul aplicației Terminal opendiff.
Iată cum puteți compara două directoare cu FileMerge:
- space + spațiu, tastați „FileMerge” și deschideți-l.
- Faceți clic pe butonul „stânga” și alegeți folderul din care doriți să mutați articole. (Dosarul „vechi”)
- Faceți clic pe butonul „dreapta” și alegeți folderul doriți să mutați elementele TO. (folderul „nou”) și faceți clic pe butonul „Comparați”.
- În panoul din dreapta, alegeți să excludeți: „identic” și „Schimbat la dreapta”. În acest fel veți continua y vedeți fișierele care lipsesc în folderul „nou” și ignorați fișierele pe care le-ați adăugat în folderul „nou”.
- Mutați fișierele manual în Finder sau lăsați FileMerge să o facă, alegând o opțiune în Meniul derulant „Merge” din panoul din dreapta.
Comentarii
- Aș dori să aleg acest răspuns pentru că
opendiff
ar putea fi considerat aproape ” la pachet ” cu OS X, dar când încerc să difuzez două foldere, a deschis un vizualizare urâtă care nu a fost atât de ușor de înțeles și, de asemenea, nu am putut vedea cum pot îmbina două fișiere în vizualizarea fișierelor. ‘ sunt sigur că este posibil, dar dacă această caracteristică de bază nu este evidentă, voi prefera să caut ceva mai bun;) - FileMerge nu este la fel de bun ca BeyondCompare, printr-o lovitură de la distanță. Dar este gratuit și pentru o cerință unică ca ‘ să fie prețul pe care îl căutam 🙂
Răspuns
Utilitarul încorporat pentru macOS și Linux
Dacă nu vă deranjează să utilizați terminalul, diff
poate compara directoarele.
Acest utilitar este disponibil și în majoritatea distribuțiilor Linux.
diff -rq directory1/ directory2/
-r
indică recurse prin subdirectoare și -q
dă rezultate scurte (de exemplu, nu afișați diferențele reale, rețineți doar ce fișiere / direcții sunt diferite).
Alte opțiuni utile sunt:
-s
raportați fișiere identice,
-i
ignorați majusculele din conținutul fișierului,
--ignore-file-name-case
ignorați majusculele atunci când comparați numele fișierelor.
Dacă doriți să evitați avertismentele (mai ales avertismente de utilitate) cu privire la diferențele în .DS_Store
fișiere, apoi utilizați:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Comentarii
- Puteți exclude subfoldere direct prin
diff --exclude node_modules
- Chiar mai bine, dvs. poate folosi
diff -x node_modules
Răspuns
Diffmerge ar trebui să îndeplinească toate cerințele dvs.
Comentarii
- Sper doar că vor face un program de instalare care va putea să instaleze starterele de linie de comandă și să îmbunătățească experiența actuală de instalare.
- Acesta este un subiect vechi – dar l-am instalat prin
brew cask install diffmerge
și a instalat fără probleme. - Apr 2016: este încă menținut și este încă unul dintre instrumentele mele de dezvoltare.
- Am încercat FWIW
brew cask install diffmerge
astăzi (iunie 2020) și când am încercat să rulez diffmerge, am primit o casetă de alertă care îmi spune că MacOS nu ‘ nu va rula programul, deoarece poate ‘ nu verificați dezvoltatorul. (diferența nu a rulat) - @MikeTheTall Nu este ‘ atât de obișnuit pentru aplicațiile care nu provin din magazinul de aplicații? Ați încercat direct Ctrl-faceți clic pe pictograma aplicației și apoi ați ales
open
din meniul de comenzi rapide?
Răspuns
Un alt instrument elegant pentru a realiza acest lucru este rsync, așa cum este descris în Unix & Linux StackExchange .Pentru a compara două foldere, puteți face
rsync -avun $SOURCE $TARGET
Și dacă sunteți cu adevărat îngrijorat de consistența fișierului / putrezirea biților, există și opțiunea c pentru a compara sumele de verificare a fișierelor
rsync -avnc $SOURCE $TARGET
Comentarii
- Referință excelentă pentru utilitatea sa pentru toate Unixes 🙏🏻.
Răspuns
Am achiziționat recent o copie a Caleidoscop (aproximativ 40 USD SUA). Este „o aplicație curată.
vimdiff este disponibilă și prin linia de comandă și este portabilă pe majoritatea domeniilor UNIXy.
Comentarii
- ‘ folosesc Caleidoscopul de câteva luni. Merită prețul. Se scoate la vânzare ocazional.
- Caleidoscopul nu vă permite să editați un fișier, inutil!
- Prețul caleidoscopului în App Store în 2020: 74,99 euro
Răspuns
Ar trebui să încercați software-ul puternic open-source meld . Versiunea pentru Mac poate fi găsit la Meld for OSX . Suportă atât directorul, cât și compararea fișierelor și funcționează excelent sub Mac.
Mi s-a spus să îmbunătățesc acest lucru răspundeți și explicați de ce meld-ul este bun. În general, Meld este un software de comparație completă a caracteristicilor utilizat în principal în GNOME. Este mai bun decât o mulțime de software enumerate aici, deoarece
- este gratuit și open source Deci eu nu trebuie să vă faceți griji cu privire la taxă sau securitate
- dacă nu este mai puternic, este la fel de sofisticat ca o mulțime de software care vă cere mulți bani
- este utilizator- prietenos și nu implică configurare complexă sau comandă de tastare în terminal. Ar trebui să îl puteți folosi imediat după instalare.
Partea că nu este la fel de bună ar putea fi că este dezvoltată sub GTK. Deci, uneori, nu se simte ca programele MAC de natură. În plus, vechile versiuni MAC erau un pic buggy. Dar cel mai recent 3.19.2 pe care îl folosesc în prezent funcționează excelent și nu am întâlnit niciodată o problemă.
Comentarii
- De asemenea, instalarea este ușoară cu
brew cask install meld
Răspuns
Instrumentul diff care vine cu Textul Wrangler al software-ului Bare Bones are comparație de directoare, deși arată doar care fișiere sunt în ambele directoare și care sunt numai în fiecare dintre directoare. Când selectați un fișier care se poate edita în ambele fuzionând modificările linie cu linie printr-un clic pe un buton. Totuși, nu vă permite să mutați fișiere. Trebuie să faceți acest lucru extern (de exemplu, prin Finder).
Mi se pare una dintre cele mai bune opțiuni gratuite.
Răspuns
Eu folosesc Sincronizare folder Costă 8,99 USD pe Mac App Store Funcționează foarte bine.
Răspuns
Am comparat structuri mari de dosare (DVD-uri) în trecut și am dezvoltat un utilitar de linie de comandă pentru a face acest lucru. Am făcut recent utilitarul (CrcCheckCopy) gratuit și multiplataforma (MacOS și Windows).
CrcCheckCopy scanează folderul sursă și creează un fișier care conține ștampilele CRC ale tuturor fișierelor. Apoi, acest fișier este utilizat pentru a compara folderul țintă.
Puteți obține de aici: https://www.starmessagesoftware.com/crccheckcopy Feedbackul dvs. va fi foarte apreciat.
Răspuns
Aplicația Schimbări (37,19 USD) a fost obișnuita mea rkforce pentru asta. Este „la fel de bun ca Beyond Compare.
Notă: Sper că acest QA este permis să existe, deși este împotriva a cel puțin normelor SO pentru prezentarea produselor. Necesitatea unui instrument de comparare a directorului grafic, intuitiv și utilizabil pentru macOS rămâne acută. Candidații open source nu au atins nivelul de utilizare pe care îl oferă instrumentele comerciale.
Răspunde
Dacă știi cum să rulezi Python , iată un script pe care l-am scris acum ceva timp pentru a compara eficient două directoare.
Caracteristici:
- poate compara structurile arborelui și modificările fișierelor (pe baza dimensiunii fișierului & Hash MD5)
- poate dezactiva compararea fișierelor, afișând doar modificările structurii arborelui (foarte rapid!)
- poate dezactiva compararea conținutului fișierului , bazându-vă doar pe modificările dimensiunii fișierului (din nou, foarte rapid)
- poate coloriza ieșirea pentru o mai bună lizibilitate.
Și, în mod firesc, se poate modifica în funcție de nevoile dvs., dacă știți cum să programați.
#!/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 la GitHub Gist.
NOTĂ: nu va funcționa pentru fișierele sau subdirectoarele care au fost mutate în iCloud.
Răspuns
Mai ușor soluție: sincronizați fișierul fișiere folosind Dropbox sau altele similare, apoi folosiți WinMerge pe Windows.
Utilitarul FileMerge livrat cu Xcode nu compară folderele și nu combină / editează.
Lasă un răspuns