jika Anda telah menginstal vim, coba ini:
vimdiff file1 file2
atau
vim -d file1 file2
Anda akan menemukannya fantastis.
Coba sdiff
(man sdiff
)
sdiff -s file1 file2
Jika Anda lebih suka gaya keluaran berbeda dari git diff
, Anda dapat menggunakannya dengan --no-index
tandai untuk membandingkan file yang tidak ada dalam repositori git:
git diff --no-index a.txt b.txt
Menggunakan beberapa file dengan masing-masing sekitar 200k string nama file, saya membuat tolok ukur (dengan time
bawaan command) pendekatan ini vs beberapa jawaban lain di sini:
git diff --no-index a.txt b.txt
# ~1.2s
comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s
diff a.txt b.txt
# ~2.6s
sdiff a.txt b.txt
# ~2.7s
vimdiff a.txt b.txt
# ~3.2s
comm
tampaknya menjadi yang tercepat sejauh ini, sedangkan git diff --no-index
tampaknya menjadi pendekatan tercepat untuk keluaran gaya-berbeda.
Pembaruan 25-03-2018 Anda sebenarnya dapat menghilangkan --no-index
tandai kecuali Anda berada di dalam repositori git dan ingin membandingkan file yang tidak terlacak di dalam repositori itu. Dari halaman manual:
Formulir ini untuk membandingkan dua jalur yang diberikan pada sistem file. Anda dapat menghilangkan opsi --no-index saat menjalankan perintah di pohon kerja yang dikontrol oleh Git dan setidaknya salah satu jalur mengarah ke luar pohon kerja, atau saat menjalankan perintah di luar pohon kerja yang dikontrol oleh Git.
Sortir dan gunakan comm
:
comm -23 <(sort a.txt) <(sort b.txt)
comm
membandingkan (mengurutkan) file input dan secara default menghasilkan tiga kolom:baris yang unik untuk a, baris yang unik untuk b, dan baris yang ada di keduanya. Dengan menentukan -1
, -2
dan/atau -3
Anda dapat menekan output yang sesuai. Oleh karena itu comm -23 a b
daftar hanya entri yang unik untuk a. Saya menggunakan <(...)
sintaks untuk mengurutkan file dengan cepat, jika sudah diurutkan, Anda tidak memerlukan ini.