Jakich narzędzi do porównywania katalogów mogę używać w systemie OS X?
On 10 lutego, 2021 by adminSzukam narzędzia, które jest w stanie porównać katalogi, a nie tylko pliki. Ważne jest również, aby móc wywołać narzędzie z wiersza poleceń.
Byłoby wspaniale mieć darmowe narzędzie, jeśli nie darmowe, podaj cenę.
Odpowiedź
Dla wszystkich pracowników Google … zapoznaj się z Poza porównaniem . Kosztuje 30 $ lub 50 $ za wersję Pro.
Komentarze
- Zwykle staram się unikać polecania rozwiązania komercyjnego, gdy istnieją darmowe i otwarte alternatywy, ale BeyondCompare to szczególny przypadek, w którym jest wart każdego grosza … a także jest wieloplatformowy. Używam go od ponad 10 lat i długo czekałem na wersję dla systemu MacOS.
- Jest teraz kwiecień 2020 r., A wersja pro kosztuje teraz 60 USD.
- I ' wypróbowaliśmy już wszystkie rozwiązania na tej stronie i myślę, że Beyond Compare jest w 100% najlepszą i najbardziej godną rekomendacją.
Odpowiedź
FileMerge (bezpłatny), dostarczany z Xcode, oferuje widok katalogu.
Wersja wiersza poleceń jest dostępny w opendiff aplikacji Terminal.
Oto jak możesz porównać dwa katalogi z FileMerge:
- ⌘ + spacja, wpisz „FileMerge” i otwórz go.
- Kliknij przycisk „w lewo” i wybierz folder, z którego chcesz przenieść elementy. („Stary” folder)
- Kliknij przycisk „w prawo” i wybierz folder, chciałby przenieść elementy DO (folder „nowy”) i kliknąć przycisk „Porównaj”
- W prawym panelu wybierz wykluczenie: „identyczne” i „Prawidłowo zmienione”. W ten sposób y zobacz pliki, których brakuje w „nowym” folderze i zignoruj pliki, które mogłeś dodać do „nowego” folderu.
- Przenieś pliki ręcznie w Finderze lub pozwól FileMerge zrobić to, wybierając opcję w Menu „Scal” w prawym panelu.
Komentarze
- Chciałbym wybrać tę odpowiedź, ponieważ
opendiff
można uznać za prawie ” w pakiecie ” z systemem OS X, ale gdy próbuję porównać dwa foldery, otwiera się brzydki widok, który nie był tak łatwy do zrozumienia, a także nie byłem w stanie zobaczyć, jak połączyć dwa pliki w widoku plików. Jestem ' na pewno jest to możliwe, ale jeśli ta podstawowa funkcja nie jest oczywista, wolę poszukać czegoś lepszego;) - FileMerge nie jest tak dobry jak BeyondCompare, z daleka. Ale to nic nie kosztuje i jednorazowo ' to cena, której szukałem 🙂
Odpowiedź
Wbudowane narzędzie dla macOS i Linux
Jeśli nie masz nic przeciwko używaniu terminala, diff
może porównywać katalogi.
To narzędzie jest również dostępne w większości dystrybucji Linuksa.
diff -rq directory1/ directory2/
-r
wskazuje cykliczne w podkatalogach, a -q
daje krótkie wyjście (tj. nie pokazuj rzeczywistych różnic, po prostu zwróć uwagę, jakie pliki / katalogi są różne).
Inne przydatne opcje to:
-s
zgłoś identyczne pliki,
-i
ignoruj wielkość liter w treści pliku,
--ignore-file-name-case
ignoruj wielkość liter podczas porównywania nazw plików.
Jeśli chcesz uniknąć ostrzeżeń (głównie ostrzeżeń dotyczących przydatności) dotyczących różnic w .DS_Store
pliki, a następnie użyj:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Komentarze
- Możesz bezpośrednio wykluczyć podfoldery, używając
diff --exclude node_modules
- Jeszcze lepiej, możesz może użyć
diff -x node_modules
Answer
Diffmerge powinien spełniać wszystkie Twoje wymagania.
Komentarze
- Mam tylko nadzieję, że stworzą instalator który będzie mógł zainstalować startery wiersza poleceń i ulepszyć bieżącą instalację.
- To jest stary temat – ale zainstalowałem go przez
brew cask install diffmerge
i zainstalowałem bez problemów. - Kwiecień 2016: jest nadal utrzymywany i nadal jest jednym z moich podstawowych narzędzi programistycznych.
- FWIW Próbowałem
brew cask install diffmerge
dzisiaj (czerwiec 2020 r.) i kiedy próbowałem uruchomić diffmerge, pojawiło się okno ostrzegawcze z informacją, że MacOS nie ' nie zamierza uruchomić programu, ponieważ może ' t weryfikacja programisty. (diffmerge nie uruchomiło się) - @MikeTheTall Isn ' t to zwykle dla aplikacji spoza sklepu z aplikacjami? Czy próbowałeś bezpośrednio Ctrl-kliknij ikonę aplikacji, a następnie wybierz
open
z menu skrótów?
Odpowiedz
Kolejnym fajnym narzędziem do osiągnięcia tego jest rsync, zgodnie z opisem w Unix & Linux StackExchange .Aby porównać dwa foldery, możesz zrobić
rsync -avun $SOURCE $TARGET
A jeśli naprawdę martwisz się o spójność plików / rotację bitów, jest również opcja c, aby porównać sumy kontrolne plików
rsync -avnc $SOURCE $TARGET
Komentarze
- Świetne źródło informacji o użyteczności we wszystkich Uniksach 🙏🏻.
Odpowiedź
Niedawno kupiłem kopię Kalejdoskop (ok. 40 USD). To „czysta aplikacja.
vimdiff jest również dostępny za pośrednictwem wiersza poleceń i można go przenosić w większości domen UNIXY.
Komentarze
- ' używam Kalejdoskopu od kilku miesięcy. Wart swojej ceny. Okazjonalnie trafia do sprzedaży.
- Kalejdoskop nie pozwala na edycję pliku, bezużyteczny!
- Cena Kalejdoskopu w App Store w 2020 roku: 74,99 euro
Odpowiedź
Wypróbuj potężne oprogramowanie open source meld . Wersja dla komputerów Mac można znaleźć pod adresem Meld for OSX . Obsługuje zarówno porównywanie katalogów, jak i plików i działa świetnie pod komputerami Mac.
Powiedziano mi, żebym to poprawił Odpowiedz i wyjaśnij, dlaczego połączenie jest dobre. Ogólnie rzecz biorąc, Meld to pełne oprogramowanie do porównywania funkcji, używane głównie w GNOME. Jest lepsze niż wiele programów wymienionych tutaj, ponieważ
- jest bezpłatne i otwarte , Więc yo nie musisz martwić się o opłatę lub bezpieczeństwo
- jeśli nie potężniejszy, jest tak wyrafinowany, jak wiele programów, które żądają dużych pieniędzy
- to jest użytkownik- przyjazny i nie wymaga skomplikowanej konfiguracji ani wpisywania poleceń w terminalu. Powinieneś być w stanie go użyć natychmiast po zainstalowaniu.
Część, która nie jest tak dobra, może być taka, że została opracowana pod GTK. Czasami więc nie wygląda to jak naturalne programy MAC. Poza tym stare wersje MAC były trochę wadliwe. Ale najnowsza wersja 3.19.2, której obecnie używam, działa świetnie i nigdy nie napotkałem problemu.
Komentarze
- Również instalacja jest łatwa dzięki
brew cask install meld
Odpowiedź
Narzędzie porównywania, które zawiera Text Wrangler Bare Bones Software zawiera porównanie katalogów, chociaż pokazuje tylko, które pliki znajdują się w obu katalogach, a które tylko w każdym z nich. Po wybraniu plik, który znajduje się w obu, możesz edytować, scalając zmiany wiersz po wierszu za pomocą kliknięcia przycisku. Nie pozwala jednak na przenoszenie plików. Musisz to zrobić zewnętrznie (np. Przez Findera).
Uważam, że jest to jedna z lepszych bezpłatnych opcji.
Odpowiedź
Używam Folder Sync To kosztuje 8,99 USD na Mac App Store Działa naprawdę dobrze.
Odpowiedź
Porównywałem duże struktury folderów (DVD) W przeszłości opracowałem narzędzie wiersza poleceń, które to robi. Niedawno narzędzie (CrcCheckCopy) stało się bezpłatne i wieloplatformowe (MacOS i Windows).
CrcCheckCopy skanuje folder źródłowy i tworzy plik zawierający znaczniki CRC wszystkich plików. Następnie ten plik jest używany do porównania folderu docelowego.
Możesz go pobrać stąd: https://www.starmessagesoftware.com/crccheckcopy Twoja opinia jest dla Ciebie bardzo wdzięczna.
Odpowiedź
Zmiana aplikacji (37,19 USD) była kiedyś moim wo rkforce za to. To jest tak dobre, jak Beyond Compare.
Uwaga: Mam nadzieję, że ta kontrola jakości może istnieć, chociaż jest to sprzeczne z przynajmniej normami SO, które są sprzeczne z normami dotyczącymi produktów. Potrzeba użytecznego, intuicyjnego narzędzia do graficznego porównywania katalogów dla systemu macOS jest nadal paląca. Kandydaci open source nie osiągnęli poziomu użyteczności, jaki zapewniają narzędzia komercyjne.
Odpowiedź
Jeśli wiesz, jak uruchomić Pythona , oto skrypt, który napisałem jakiś czas temu, aby efektywnie porównać dwa katalogi.
Cechy:
- może porównywać struktury drzewiaste i zmiany plików (na podstawie rozmiaru pliku & skróty MD5)
- może wyłączyć porównywanie plików, pokazując tylko zmiany struktury drzewa (bardzo szybko!)
- może wyłączyć porównywanie zawartości plików , polegając tylko na zmianach rozmiaru pliku (znowu, bardzo szybko)
- może pokolorować wynik dla lepszej czytelności.
I oczywiście może modyfikować zgodnie z własnymi potrzebami, jeśli wiesz, jak programować.
#!/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 do GitHub Gist.
UWAGA: nie będzie działać dla plików lub podkatalogów, które zostały przeniesione do iCloud.
Odpowiedź
Najłatwiej rozwiązanie: zsynchronizuj plik pliki za pomocą Dropbox lub podobnego, a następnie po prostu użyj WinMerge w systemie Windows.
Narzędzie FileMerge dostarczane z Xcode nie porównuje folderów i nie łączy / edytuje.
Dodaj komentarz