Yanıtlar:
En belirgin cevap sadece diff komutunu kullanmaktır ve muhtemelen --speed-large-files parametresini eklemek iyi bir fikirdir.
diff --speed-large-files a.file b.file
Sıralanmamış dosyalardan bahsediyorsunuz, bu yüzden önce dosyaları sıralamanız gerek
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
2. sıralama çıkışını doğrudan diff'e bağlayarak ekstra bir çıktı dosyası oluştururken tasarruf sağlayabilirsiniz
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
Açıkçası, bunlar bol miktarda kullanılabilir belleğe sahip bir sistemde en iyi şekilde çalışır ve muhtemelen bol miktarda boş disk alanına ihtiyacınız olacaktır.
Bunları daha önce denediyseniz sorunuzdan net değildi. Eğer öyleyse, neyin yanlış gittiğini bilmek faydalı olacaktır (çok uzun sürdü vb.). Her zaman, stok sıralama ve fark komutlarının, işleri farklı şekilde gerçekleştirmeyi mümkün kılan dosyaların etki alanına özgü bazı özellikleri olmadıkça, en azından özel komutları yapma eğiliminde olduğunu buldum.
diff <(command 1) <(command 2)
<(cmd1) <(cmd2)sözdiziminin işe yaradığını merak ediyorsa (standart girişi iki kez yönlendirmek gibi geliyor!), Deneyin echo hello <(cmd1) <(cmd2). hello /dev/fd/63 /dev/fd/62Aniden açıkça ortaya koyan bir şey göreceksiniz ;)
--speed-large-filesyeterli RAM'iniz yoksa seçenek yardımcı olmaz. Ayrıca, korumak istediğiniz çok satırlı bir kayıt yapınız varsa ön sıralama yardımcı olmaz. (@Unhammer tarafından) Yukarıda değinilen seçenekleri ilginç olmakla çıktı rdiffve bsdiffoldukça ikili olduğunu. bdiffHeirloom Araç Kutusu'ndan yükleme göz kamaştırıcı bir göreve benziyor (Heirloom devtools, soyu tükenmiş başlık dosyaları gerektirir…). Gerçekten çabaya değer mi? Başka alternatifler var mı?
Girişlerin sıralanması ve diffprograma girişlerinin sıralandığını bildirmesi çok büyük bir hızlanma sağlar. diffBöyle bir seçeneğe sahip olan hiçbir şey bilmiyorum ama commsıralanan girdiler varsayar ve amaçlarınız için yeterli olursa daha hızlı olur.
commBunun için harika çalıştı, daha önce hiç duymadım ama görünüşe göre çekirdeklerinde kaldı.
mkfifooluşturmak için kullanın . Her iki koyun ile s arka planda ve fark için dosya adları olarak borulu hem kullanın.[ab].file.sortedsortsort&