Alat perbandingan file dan direktori?


149

Saya mencari sesuatu yang akan membandingkan direktori dan file seperti Beyond Compare untuk windows.

Terutama untuk penggunaan kontrol sumber, tapi saya perlu menggunakannya untuk penyebaran juga.


Apakah Anda hanya menginginkan daftar file atau konten aktual dari setiap file?
Martin Ueding

Saya ingin daftar file dan jika mungkin konten yang berbeda antara file dengan jalur yang sama.
isoman

2
Akan sangat berguna jika alat GUI memungkinkan menyembunyikan folder & file yang identik . Ini akan membuatnya lebih mudah untuk berkonsentrasi pada folder & file aneh. Adakah yang tahu alat yang mendukung fitur ini?
JJD

Lihatlah bersama-sama . Di luar membandingkan apakah pendekatan "one-stop shop melakukan semuanya", sementara serentak fokus pada penanganan traversal pohon, menjaga keadaan dan menyebarkan perubahan, mencakup fitur Beyond Compare dengan mendelegasikan hal-hal seperti mendelegasikan hal-hal seperti diff, penggabungan 3 arah, dll. Untuk apa pun yang Anda lakukan program favorit bekerja pada level file. Unison adalah perangkat lunak gratis, sangat kuat, dan matang, dapat dengan cepat mendeteksi dan menyinkronkan pohon besar, melalui jaringan antara berbagai OS, dll. Baca dokumen terlebih dahulu, terutama pada Windows.
Stéphane Gourichon

emacs memiliki alat pembanding direktori. Seperti semua emacs, eye candy adalah, "apa arti eye candy?", Namun itu menunjukkan bantuan kontekstual dengan kunci, memungkinkan dengan beberapa penekanan tombol analisis berulang, menyembunyikan file identik atau bahkan subdirs, secara interaktif memilih file untuk menunjukkan warna -kode yang berbeda dengan berbagai opsi, secara interaktif menggabungkan, menyebarkan, atau melakukan pengeditan sewenang-wenang pada file, dengan mudah pergi ke file atau dir berikutnya, melacak keadaan, dengan semua fasilitas pengeditan yang biasa.
Stéphane Gourichon

Jawaban:


175

Meldinstal berbaur

Meld adalah alat yang dapat membandingkan dan menggabungkan file dan direktori. Ini adalah analog GUI dengan alat standar diff instal diffutilsdan patch pasang tambalanperintah. (Lihat man diff dan man patch untuk detail lebih lanjut tentang itu)

masukkan deskripsi gambar di sini

Juga, banyak sistem kontrol sumber (seperti bzr instal bzr-gtkatau git instal git) memiliki kemampuan untuk membuat perbedaan antar versi.


2
Meld adalah AMAZING. Saya menggunakannya sebagai diff kontrol sumber saya.
Matt Joiner

12
Baru saja mencoba pada folder yang lebih besar - 4 GB, 2000 file. Fungsionalitas berbaur adalah seperti yang diinginkan. Tetapi untuk folder ini berbaur sangat lambat dan UI tidak responsif (blok). Menggunakan rsync sekarang.
geekQ

1
Juga berfungsi baik dalam membandingkan file teks berdampingan, atau bahkan menyalin hal-hal tempel. Antarmuka terbaik yang pernah saya lihat!
Stefan Rogin

@geekQ sebagai alternatif cepat, mampu menangani folder sebesar yang Anda inginkan secara instan, lihat di beyond comparebawah. superior to meld imho
phil294

Meld crash setiap kali saya ingin memilih folder: / Saya memiliki versi terbaru pada repositori distribusi saya (Ubuntu 14.04)
Youda008

44

Diff adalah temanmu.

diff -ur path1 path2

Ini akan membandingkan semua file yang umum antara path1 dan path2.

Jika Anda mengubah -urke -urNmaka itu juga akan menampilkan konten file yang hanya ada di salah satu jalur.


1
Dipasang colordiffdan digunakancolordiff -ur path1 path2
warvariuc

Tidak berfungsi di cygwin.
Tomáš Zato


13

Gunakan diffperintah:

diff -u file1 file2

diff -umemilih format dengan beberapa baris konteks. Dataran diff file1 file2hanya mencantumkan garis yang berbeda. Ada banyak opsi untuk mengontrol format output, mengabaikan perbedaan hanya spasi, dll.

Jika Anda ingin menulis output ke file, arahkan kembali:

diff -u file1 file2 >file1-file2.diff

12

Komandan Gnomeinstal Gnome Commander

Antarmuka mungkin tidak benar-benar seksi, tetapi sangat kuat!

teks alternatif

Dan jika Anda terbiasa dengan * Komandan lainnya (seperti Norton, atau sejenisnya), Anda tidak akan hilang.


1
Saya belum menggunakannya untuk membandingkan 2 file, tetapi saya telah menggunakannya untuk memberi tahu saya file mana yang berbeda saat membandingkan dengan direktori. Ini sangat berguna ketika memilah foto ;-)
Huygens

10

Alat baris perintah

Terinspirasi oleh entri blog ini .

beda

Mendaftar file yang berbeda:

diff -qr folder1 folder2

Cantumkan juga konten:

diff -Naur folder1 folder2

rsync

Jika dua direktori tidak pada mesin yang sama, rsyncmungkin solusi termudah. Biasanya rsyncdigunakan untuk menyinkronkan direktori, tetapi Anda dapat menjalankannya dalam mode verbose dan dry, sehingga hanya akan mencantumkan file yang harus diubah.

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

Anda dapat berhenti cjika ingin membandingkan file berdasarkan cap waktu dan ukuran file untuk mempercepat semuanya:

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

9

Krusaderinstal krusader

Krusader adalah alat gratis (tersedia di Pusat Perangkat Lunak) yang menampilkan konten folder sebagai perbandingan dan Anda dapat menyinkronkan dengan banyak opsi berbeda. Anda dapat memfilter sambil menyinkronkan dan membandingkan.

Krusader

Untuk membandingkan konten file, Anda cukup menandai dua file, pilih "file"> "bandingkan konten" dan mereka dibandingkan berdasarkan huruf per huruf. alat pembanding default yang digunakan oleh krusader adalah alat KDE default " Kompare ". Anda dapat mengatur krusader untuk menggunakan alat perbandingan lainnya - seperti misalnya salah satu di atas.

Ini adalah solusi paling lengkap yang pernah saya temukan dan sangat nyaman. Dan itu mendukung semua fungsi keybindungs ​​yang digunakan oleh komandan tengah malam (sintaks komandan norton).


Anda juga dapat menggunakan "Tools -> Synchronize Directories" untuk mendapatkan tampilan perubahan file rekursif dari dua panel direktori.
Angelos Pikoulas

sayangnya sinkronisasi di krusader tidak terawat: bugs.kde.org/show_bug.cgi?id=270150#c7 . Apakah ada alternatif yang dipelihara secara aktif?
rubo77

1
@ rubo77: bug ini telah diperbaiki untuk sementara waktu.
mivk

9

KDiff3 instal kdiff3

Ini adalah front-end grafis yang berbeda untuk pengguna KDE (atau jika Anda tidak keberatan menggunakan aplikasi Qt).

kdiff3

Ada juga dirdiff instal dirdiff untuk direktori.



4

Unison adalah alat sinkronisasi file cepat yang menggunakan algoritma rsync dan memungkinkan Anda melihat perbedaan sebelum memperbarui antara 2 lokasi, baik itu jarak jauh atau lokal.


4

Saya belajar tentang hashdeep dua minggu lalu. Dan itu memiliki beberapa keunggulan kuat:

  • Sebaliknya meld, ini berfungsi dengan baik untuk folder yang sangat besar. Di mana meldmenjadi sangat lambat dan UI tidak responsif (diblokir), hashdeep hanya bekerja pada kecepatan konstan
  • Berbeda dengan rsync, hashdeep mendeteksi file yang dipindahkan - file dengan konten yang sama, hanya di direktori yang berbeda.

Output verbal seperti:

...
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

Cara yang baik untuk melakukan perbandingan ini adalah menggunakan " find " dengan " md5sum ", lalu " diff ".

Contoh:

Gunakan find untuk membuat daftar semua file dalam direktori kemudian menghitung hash md5 untuk setiap file dan pipa ke file:

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

Lakukan prosedur yang sama ke direktori lain:

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

Kemudian bandingkan hasil dua file dengan "diff":

$diff dir1.txt dir2.txt

Strategi ini sangat berguna ketika dua direktori yang akan dibandingkan tidak berada di mesin yang sama dan Anda perlu memastikan bahwa file-file tersebut sama di kedua direktori.

Cara lain yang baik untuk melakukan pekerjaan itu adalah menggunakan git

git diff --no-index dir1/ dir2/

Salam Hormat!


3

Coba juga FreeFileSync . Ini memiliki antarmuka yang layak, kecepatan perbandingan yang dapat diterima, penyaringan yang baik dari hasil perbandingan, cara sinkronisasi yang berbeda. Itu datang dengan alat pemantauan folder (RealTimeSync) yang dapat meluncurkan FreeFileSync (sebenarnya semua perintah atau skrip) ketika folder tertentu (atau folder) atau file di dalamnya diubah. Sangat layak dicoba.

Info lebih lanjut di sini atau di sini , di mana Anda memiliki PPA juga

Dari halaman mereka, fitur utama:

Bandingkan file (oleh atau berdasarkan tanggal) dan sinkronkan.

Tanpa batasan: Jumlah file sewenang-wenang dapat disinkronkan.

Dukungan Unicode.

Dukungan jaringan.

Dukungan bawaan untuk nama file yang sangat panjang (lebih dari MAX_PATH = 260 karakter).

Database sinkronisasi untuk propagasi file yang dihapus dan deteksi konflik

Dukungan untuk beberapa pasangan folder dengan konfigurasi berbeda

Dukungan penuh untuk Windows / Linux Symbolic Links dan Windows Junction Points.

UI ramping & mudah diakses: Sangat dioptimalkan untuk kecepatan dan kumpulan data yang sangat besar.

Algoritma dikodekan dalam C ++ sepenuhnya.

Semua indikator kemajuan dioptimalkan untuk kinerja maksimum!

Buat Batch Jobs untuk sinkronisasi otomatis dengan atau tanpa GUI.

Fokus pada kegunaan:

Hanya fungsionalitas yang diperlukan di UI: tidak ada menu kelebihan atau ikon hutan.

Pilih semua folder melalui seret & lepas.

Konfigurasi dan pengaturan layar yang terakhir digunakan disimpan secara otomatis.

Pelihara dan muat konfigurasi yang berbeda dengan cara drag & drop, tombol muat atau commandline.

Klik dua kali untuk memulai aplikasi eksternal (mis. Tampilkan file di Windows Explorer)

Salin & tempel semua data kisi sebagai teks

Hapus file tidak berguna / sementara langsung di grid utama.

Klik kanan menu konteks.

Informasi status komprehensif dan pelaporan kesalahan

Urutkan daftar file berdasarkan nama, ukuran atau tanggal.

Dukungan untuk ukuran file lebih besar dari 4 GB.

Opsi untuk memindahkan file ke Recycle Bin alih-alih menghapus / menimpa mereka.

Abaikan direktori "\ RECYCLER" dan "\ System Volume Information" dengan Filter default. (Khusus Windows)

Versi lokal tersedia untuk banyak bahasa.

Hapus sebelum penyalinan: Hindari kekurangan ruang disk untuk pekerjaan sinkronisasi besar.

Fungsionalitas filter untuk memasukkan / mengecualikan file dari sinkronisasi (tanpa perlu membandingkan kembali!).

Sertakan / kecualikan file tertentu dari sinkronisasi sementara.

Secara otomatis menangani perubahan waktu musim panas pada volume FAT / FAT32.

Versi portabel tersedia (dapat dipilih melalui penginstal).

Versi asli 64-Bit.

Periksa pembaruan dari dalam FreeFileSync secara otomatis.

Salin file yang terkunci menggunakan Windows Volume Shadow Copy Service. (Khusus Windows)

Buat cadangan reguler dengan makro% waktu%,% tanggal% dalam nama direktori

Salin file dan folder buat / akses / modifikasi kali saat sinkronisasi

Strategi penguncian lanjutan untuk memungkinkan beberapa proses sinkronisasi (mis. Banyak penulis, berbagi jaringan yang sama)

Saya akan menambahkannya dapat mengelola file yang dihapus, memindahkannya ke Sampah atau folder yang ditentukan oleh pengguna. Kelemahannya: dokumentasi program sedikit berfokus pada Windows, lebih sedikit pada Linux. Tapi itu berfungsi dengan baik.


3

Anda dapat menggunakan difus:

sudo apt-get install diffuse
diffuse file1 file2

2
Saya sering menggunakan fitur Diffuse for one killer - kemampuan untuk secara manual mengatur penggabungan jangkar. Itu tidak melakukan direktori (belum), tetapi untuk perbedaan individu dan berantakan, fitur jangkar mengagumkan.
Sk606


1

Eclipse IDE sedikit berat jika Anda hanya melakukan perbandingan, tetapi melakukan pekerjaan dengan baik, di antara hal-hal lain. Anda dapat memilih 2 proyek, jalur atau file dan membandingkannya satu sama lain, dan juga menyinkronkan dengan server kontrol sumber.


1

IMHO FreeFileSync sangat baik dan lebih bermanfaat daripada Meld. Cepat dan stabil, dapat melakukan sinkronisasi yang dapat disesuaikan biaya dan juga dapat mengekspor hasil perbandingan ke file csv.

Tautan Lanchpad



0

Untuk membandingkan file

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Anda dapat menggunakan perintah cmp:

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

output akan menjadi

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

Untuk membandingkan dir (kebutuhan Anda):

Anda dapat menggunakan perintah diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.