bandingkan dua pohon direktori

6

Saya memiliki dua perpustakaan musik, satu versi lebih baru dari yang lain. Saya ingin membandingkannya untuk mengetahui file mana yang perlu saya salin dari pohon musik baru ke yang lama.

Saya telah mencoba diff --brief -r /oldmusicdir/ /newmusicdir/berdasarkan saran pengguna lain tetapi ^ C proses setelah lima belas menit (Saya kira beda adalah pemindaian file musik sendiri - yang tidak perlu).

Kemudian saya mencoba find /oldmusicdir/ -type d | sort > oldmusicdiruntuk yang lama dan yang baru, kemudian berlari. diff oldmusicdir newmusicdirNamun, karena saya menyimpan direktori musik di lokasi yang terpisah, setiap entri ditandai.

Selanjutnya saya mencoba menjalankan find /musicdir/ -type d | basename -s - | sort > musicdirtetapi kemudian file musicdir saya cukup membaca "-"

Adakah yang tahu bagaimana cara mendapatkan nama samaran untuk diterima dari STDIN? Atau, adakah yang lebih cepat membandingkan dua direktori musik?

Terima kasih!

barang antik
sumber

Jawaban:

8

The rsyncutilitas pertama muncul dalam pikiran saya ketika saya melihat pertanyaan Anda. Melakukan sesuatu seperti di bawah ini dapat dengan cepat menampilkan file apa yang ada di direktori atetapi tidak di b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Ini adalah opsi yang baik karena Anda dapat membandingkan konten file juga untuk memastikan mereka cocok. rsyncAlgoritma delta dioptimalkan untuk jenis kasus penggunaan ini. Kemudian jika Anda ingin bmencocokkan isi a, Anda dapat menghapus -nopsi untuk melakukan sinkronisasi yang sebenarnya.

Beberapa pertanyaan terkait:

Tony Cesaro
sumber
Rsync sepertinya program yang sangat kuat. Pasti sepadan dengan waktu saya untuk mengenal. Menjalankan rsync -nv --delete a/ b/ | grep deletingmemberi saya daftar file yang ada di b tetapi tidak a. Terima kasih!
curios
0

Bagaimana dengan membuat daftar direktori rekursif dari setiap direktori menjadi file yang terpisah dan kemudian menggunakan diffpada dua file itu?

Jason Aller
sumber
Keren. Gagasan bagus, tetapi masih ada / path / nama album sehingga semua album ditandai ketika saya menjalankan diff karena mereka memiliki jalur yang berbeda.
curios
diff --recursive --quiet --new-file dir1/ dir2/
Tom Hale