Saya mencoba menemukan diff
di antara semua file dengan nama yang sama di dua salinan direktori (misalnya yang berfungsi dan cadangan). Sebagai contoh, saya dapat diff
dua file dengan nama yang sama di keduanya:
> diff d1/f.cpp d2/f.cpp
atau saya dapat menemukan perbedaan di direktori:
> diff d1 d2
tetapi bagaimana saya bisa menemukan perbedaan antara *.cpp
file saja?
> diff d1/*.cpp d2/*.cpp
tampaknya tidak berfungsi (untuk alasan yang jelas).
[Mungkin mudah diselesaikan dengan loop, tapi saya mencoba menemukan cara yang lebih elegan]
echo "${file##*/}";
sebelumdiff
perintah, jadi orang tahu file apa yang sebenarnya dibandingkan. Juga, seperti disebutkan dalam jawaban @ Rinzwind, metode ini tidak mencakup kasus ini jika daftar file tidak persis sama di kedua direktori.diff -qr {DIR1} {DIR2}
tidak semua file di kedua direktori.q
hanya menunjukkan perbedaanr
tidak rekursif. Biarkan saja jika Anda tidak membutuhkannyaAnda tidak dapat memberi tahu
diff
secara langsung untuk menggunakan wildcard tetapi Anda dapat menambahkan:untuk mengecualikan file. Jadi jika Anda hanya ingin
*.cpp
metode termudah adalah membuat file teks yang mencantumkan semua file yang tidak*.cpp
. Anda dapat melakukan ini dengan perintah berikut: dils -I "*.cpp" > excluded_files
mana-I "*.cpp"
argumen mengabaikan semua file .cpp. Perhatikan bahwa tanda kutip diperlukan.sumber
Beberapa waktu setelah mengajukan pertanyaan, saya menemukan
meld
utilitas yang berbeda, dan saya menggunakannya sejak saat itu. Ini adalah bagian besar dari program berbasis GUI yang membuat perbandingan dan menggabungkan antara file dan direktori menjadi tugas yang sangat mudah. Itu membandingkan dua atau tiga arah.Secara khusus, ini menjawab pertanyaan asli saya karena menunjukkan kepada Anda perbandingan kode warna dari isi direktori, dan memungkinkan Anda membandingkan file tertentu dengan mengklik dua kali pada nama file.
Jika seseorang membutuhkan lebih dari perbandingan tiga arah, maka
gvimdiff
(berdasarkanvim
editor) juga bagus yang menyediakan fungsi ini.sumber
Ada solusi ringan untuk itu:
diff dir1 dir2 | vim -R -
di shellIni akan menambah lipatan dan perbandingan berdampingan untuk file yang diubah.
sumber