Dosya ve dizin karşılaştırma aracı?


149

Beyond Compare gibi Windows için dizinleri ve dosyaları karşılaştıracak bir şey arıyorum.

Esas olarak kaynak kontrolünün kullanımı içindir, ancak dağıtım için de kullanmam gerekiyor.


Yalnızca dosya listesini mi yoksa her dosyanın asıl içeriğini mi istiyorsunuz?
Martin Ueding

Dosya listesini ve mümkünse aynı yoldaki dosyalar arasındaki farklı içerikleri istiyorum.
isoman

2
GUI aracının aynı klasörleri ve dosyaları gizlemeye izin vermesi kullanışlı olacaktır . Bu, tek klasörler ve dosyalar üzerinde yoğunlaşmayı çok daha kolaylaştırır. Bu özelliği destekleyen bir araç bilen var mı?
JJD

Göz at uyum . Ötesinde karşılaştırmak ağızdan, ağaç gezinme taşıma durumunu tutmak ve çoğaltım değişiklikleri kapsayan odaklanır ise yaklaşım "tek adres hepsini yok" does Ötesi özellik karşılaştır ne olursa olsun hiç fark, 3 yollu birleştirme, vb gibi şeyler devrederek senin dosya düzeyinde çalışan favori program. Unison ücretsizdir, çok sağlam ve olgun bir yazılımdır, devasa ağaçları farklı işletim sistemleri arasında ağ üzerinden hızlıca algılayabilir ve senkronize edebilir.
Stéphane Gourichon

emacs bir dizin karşılaştırma aracına sahiptir. Her şey emacs gibi, göz şekeri de "göz şekeri bile ne anlama geliyor?" Dır, ancak tuşlarla bağlamsal yardım gösterir, birkaç tuşa basarak özyinelemeli analizler sağlar, aynı dosyaları gizler, hatta alt dizinler, etkileşimli renk göstermek için dosyaları seçer Çeşitli seçeneklerle kodlanmış farklar, tüm olağan düzenleme olanaklarıyla birlikte durum izini sürerek, dosyalarda rastgele düzenlemeleri etkileşimli olarak birleştirir, dağıtır veya gerçekleştirir, kolayca bir sonraki dosyaya veya dizine gider.
Stéphane Gourichon

Yanıtlar:


175

birleşmekmeld yükleyin

Meld, dosyaları ve dizinleri karşılaştırabilen ve birleştirebilen bir araçtır. Standart diff diffutils'i yükleve patch yama yüklemekkomut satırı araçlarına bir GUI analogudur . ( Bunlarla ilgili daha fazla ayrıntı için bkz. Man diff ve man patch )

görüntü tanımını buraya girin

Ayrıca, birçok kaynak kontrol sistemi ( bzr bzr-gtk'yi yükleyinveya gibi git git yükle) sürümler arasında fark yaratma yeteneğine sahiptir.


2
Meld AMAZING. Kaynak kontrol farkım olarak kullanıyorum.
Matt Joiner

12
Daha büyük bir klasörde denedim - 4 GB, 2000 dosya. Kaynağın işlevselliği istenildiği gibidir. Ancak bu klasör için meld son derece yavaştır ve kullanıcı arabirimi yanıt vermiyor (bloklar). Şimdi rsync kullanmak.
geekQ

1
Ayrıca, metin dosyalarını yan yana karşılaştırmak veya yapıştırma işlemlerini kopyalamakta mükemmel çalışır. Gördüğüm en iyi arayüz!
Stefan Rogin

Hızlı bir alternatif olarak @geekQ, anında istediğiniz kadar büyük bir klasörün üstesinden gelebilir, aşağıya beyond comparebakın. meld
imho'dan

Meld her zaman bir klasör seçmek istediğimde çöküyor: / Dağıtım
havuzumda

44

Diff senin arkadaşın.

diff -ur path1 path2

Bu, path1 ve path2 arasında ortak olan tüm dosyaları karşılaştırır.

O zaman değiştirirseniz -ur, -urNbu da yalnızca yollardan birinde bulunan dosyaların içeriğini gösterir.


1
Yüklendi colordiffve kullanıldıcolordiff -ur path1 path2
warvariuc

Cygwin'de çalışmıyor.
Tomáš Zato


13

diffKomutu kullanın :

diff -u file1 file2

diff -uBirkaç bağlam içeriğine sahip bir format seçer. Bir düz diff file1 file2sadece farklı satırları listeler. Çıktı formatını kontrol etmek, boşluk-sadece farkları yoksaymak, vb. İçin daha birçok seçenek var.

Çıktıyı bir dosyaya yazmak istiyorsanız, yönlendirin:

diff -u file1 file2 >file1-file2.diff

12

GNOME KomutanıGnome Komutanı'nı kurun

Arayüz gerçek seksi olmayabilir, ama son derece güçlü!

alt metin

Diğer * Komutanlara (Norton ya da benzerleri gibi) alışkınsanız, kaybolmazsınız.


1
2 dosyayı karşılaştırmak için kullanmadım, ancak dizinleri karşılaştırırken hangi dosyaların farklı olduğunu bana anlatmak için kullandım. Bu özellikle fotoğrafları sıralamakta kullanışlıdır ;-)
Huygens

10

Komut satırı araçları

Bu blog girişinden ilham alındı .

diff

Farklı dosyaların listelenmesi:

diff -qr folder1 folder2

Ayrıca içerik listeleniyor:

diff -Naur folder1 folder2

rsync

İki dizin aynı makinede değilse, rsyncen kolay çözüm olabilir. Genellikle rsyncdizinleri senkronize etmek için kullanılır, ancak ayrıntılı ve kuru modda çalıştırabilirsiniz, böylece yalnızca değiştirmesi gereken dosyaları listeler.

rsync -rvnc --delete folder1 server:/path/to/folder2

Her cşeyi hızlandırmak için zaman damgalarına ve dosya boyutlarına göre dosyaları karşılaştırmak istiyorsanız , ihmal edebilirsiniz :

rsync -rvn --delete folder1 server:/path/to/folder2

9

Krusaderkrusader yükleyin

Krusader, klasör içeriğini karşılaştırmalı olarak gösteren ücretsiz bir araçtır (Yazılım Merkezinde bulunur) ve birçok farklı seçenekle senkronize edebilirsiniz. Senkronize ederken ve karşılaştırırken filtreleyebilirsiniz.

Krusader

Dosya içeriğini karşılaştırmak için iki dosyayı işaretlemeniz yeterlidir, "dosya"> "içeriği karşılaştır" ı seçin ve bunlar harf bazında karşılaştırıldı. krusader tarafından kullanılan varsayılan karşılaştırma aracı, varsayılan KDE aracı " Kompare " dir. Krusader'ı başka herhangi bir karşılaştırma aracını kullanacak şekilde ayarlayabilirsiniz - örneğin yukarıdakilerden birine benzer.

Bu şimdiye kadar bulduğum en eksiksiz çözüm ve çok uygun. Ve gece yarısı komutanı (norton komutanı sözdizimi) tarafından kullanılan tüm fonksiyon tuşlarını destekler.


İki dizin panelinin özyinelemeli dosya değişiklikleri görünümünü almak için "Araçlar -> Dizinleri Senkronize Et" seçeneğini de kullanabilirsiniz.
Angelos Pikoulas

unfortuately krusader eşzamanlayıcıyı unmaintained geçerli: bugs.kde.org/show_bug.cgi?id=270150#c7 . Aktif olarak sürdürülen bir alternatif var mı?
rubo77

1
@ rubo77: Bu hata bu arada giderildi.
mivk

9

KDiff3 kdiff3'ü yükleyin

KDE kullanıcıları için farklılık gösteren bir grafik ön uçtur (veya Qt uygulamalarını kullanmaktan çekinmiyorsanız).

KDiff3

Dizinler dirdiff yükleyin için dirdiff de var .



4

Unison, rsync algoritmasını kullanan hızlı bir dosya senkronizasyon aracıdır ve uzak veya yerel olmak üzere 2 konum arasında güncelleme yapmadan önce farkları önizlemenizi sağlar.


4

İki hafta önce hashdeep'i öğrendim . Ve bazı güçlü avantajları vardır:

  • Buna karşılık meld, çok büyük klasörler için iyi çalışıyor. Nerede meld(bloke) son derece yavaş ve UI tepkisiz hale gelir hashdeep sadece sabit bir hızda çalışır
  • Buna karşılık rsync, hashdeep taşınan dosyaları algılar - aynı içeriğe sahip dosyaları, yalnızca farklı bir dizinde.

Ayrıntılı çıktı şöyledir:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

Bu karşılaştırmayı yapmanın iyi bir yolu " md5sum " ile " find ", sonra bir " diff " kullanmaktır.

Örnek:

Dizindeki tüm dosyaları listelemek için find komutunu kullanın, ardından her dosya için md5 değerini hesaplayın ve bir dosyaya aktarın:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

Aynı işlemi başka bir dizine de yapın:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

Sonra sonuç iki dosyaları "diff" ile karşılaştırın:

$diff dir1.txt dir2.txt

Bu strateji, karşılaştırılacak iki dizin aynı makinede olmadığında ve dosyaların her iki dizinde de eşit olduğundan emin olmanız gerektiğinde çok faydalıdır.

İşi yapmanın bir başka iyi yolu git kullanmak

git diff --no-index dir1/ dir2/

Saygılarımla!


3

FreeFileSync'i de deneyin . İyi bir arayüze, kabul edilebilir karşılaştırma hızına, karşılaştırma sonucunun iyi filtrelenmesine, farklı senkronizasyon yöntemlerine sahiptir. Belirli bir klasör (veya klasörler) veya içindeki dosyalar değiştirildiğinde FreeFileSync'i (aslında herhangi bir komut veya komut dosyası) başlatabilecek bir klasör izleme aracı (RealTimeSync) ile birlikte gelir. Gerçekten denemeye değer.

Bu konuda diğer bilgiler burada ya burada bir var, PPA , çok

Sayfalarından, temel özellikleri:

Dosyaları karşılaştırın (bytewise veya tarihe göre) ve senkronize edin.

Sınırlama yok: İsteğe bağlı sayıda dosya senkronize edilebilir.

Unicode desteği.

Ağ desteği.

Çok uzun dosya adları için dahili destek (MAX_PATH = 260 karakterden fazla).

Silinen dosyaların yayılması ve çakışma tespiti için senkronizasyon veritabanı

Farklı konfigürasyonda birden fazla klasör çifti için destek

Windows / Linux Sembolik Bağlantıları ve Windows Bağlantı Noktaları için tam destek.

Yalın ve kolay erişilebilir UI: Hız ve devasa veri setleri için son derece optimize edilmiş.

Algoritmalar tamamen C ++ kodluydu.

Tüm ilerleme göstergeleri maksimum performans için optimize edildi!

GUI ile veya GUI'siz otomatik senkronizasyon için Toplu İşler oluşturun.

Kullanılabilirliğe odaklanın:

UI'da yalnızca gerekli işlevler: Aşırı yüklenmiş menü veya simge ormanı yok.

Sürükle ve bırak ile tüm klasörleri seçin.

En son kullanılan yapılandırma ve ekran ayarları otomatik olarak kaydedilir.

Sürükle ve bırak, yükle düğmesi veya komut satırıyla farklı yapılandırmaları koruyun ve yükleyin.

Harici uygulamayı başlatmak için çift tıklayın (örn. Windows Gezgini'nde dosyayı göster)

Tüm ızgara verilerini metin olarak kopyala ve yapıştır

Gereksiz / geçici dosyaları doğrudan ana şebekeden silin.

İçerik menüsünü sağ tıklayın.

Kapsamlı durum bilgisi ve hata raporlama

Dosya listelerini ada, boyuta veya tarihe göre sıralayın.

4 GB'den büyük dosya boyutları için destek.

Dosyaları silmek / üzerine yazmak yerine Geri Dönüşüm Kutusu'na taşıma seçeneği.

Varsayılan Filtreli "\ RECYCLER" ve "\ System Volume Information" dizinlerini yoksay. (Yalnızca Windows)

Yerelleştirilmiş sürümler birçok dilde kullanılabilir.

Kopyalamadan önce sil: Büyük senkronizasyon işleri için disk alanı yetersizliğinden kaçının.

Dosyaları senkronizasyona dahil etmek / dışlamak için işlevselliği filtrele

Belirli dosyaları senkronizasyondan geçici olarak dahil etme / hariç tutma.

FAT / FAT32 birimlerinde gün ışığından yararlanma saati değişikliklerini otomatik olarak işleyin.

Portatif versiyon mevcut (montör ile seçilebilir).

Yerel 64 Bit sürümü.

FreeFileSync içinden güncellemeleri otomatik olarak kontrol et.

Kilitli dosyaları Windows Birim Gölge Kopyası Hizmeti'ni kullanarak kopyalayın. (Yalnızca Windows)

Dizin adlarında% time%,% date% makrolarıyla düzenli yedekleme oluşturun

Senkronize ederken kopyalanan dosya ve klasör oluşturma / erişim / değiştirme zamanları

Birden fazla senkronizasyon işlemine izin vermek için gelişmiş kilitleme stratejisi (örneğin, birden çok yazar, aynı ağ paylaşımı)

Silinen dosyaları yöneterek, Çöp Kutusuna veya kullanıcı tarafından belirtilen bir klasöre taşıyabilir. Bir dezavantajı işaret etmek için: program belgeleri Windows'ta biraz daha az Linux üzerinde odaklanmaktadır. Ama işini güzel yapıyor.


3

Diffuse kullanabilirsiniz:

sudo apt-get install diffuse
diffuse file1 file2

2
Genellikle bir katil özelliği için Diffuse kullanıyorum - birleştirme çapalarını manuel olarak ayarlama yeteneği. Dizinler (henüz) yapmaz, ancak bireysel ve dağınık farklar için, çapalar özelliği harika.
Sk606


1

Eclipse IDE sadece karşılaştırmalar yapıyorsanız biraz ağırdır, ancak diğer şeylerin yanı sıra iyi bir iş çıkarır. 2 proje, yol veya dosya seçebilir ve bunları birbirleriyle karşılaştırabilir ve ayrıca kaynak kontrol sunucuları ile senkronize edebilirsiniz.


1

IMHO FreeFileSync, Meld'den çok iyi ve daha kullanışlıdır. Hızlı ve kararlı, costomize edilebilir senkronizasyonlar yapabilir ve karşılaştırmanın sonucunu bir csv dosyasına aktarabilir.

Lanchpad bağlantısı



0

Dosyaları karşılaştırmak için

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Komutu kullanabilirsiniz cmp:

cmp -b "File_1.txt" "File_2.txt"

çıktı

a b differ: byte 11, line 2 is  62 2  40  

Kirleri karşılaştırmak için (ihtiyaçlarınız):

diff komutunu kullanabilirsiniz :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.