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/62
Aniden açıkça ortaya koyan bir şey göreceksiniz ;)
--speed-large-files
yeterli 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ı rdiff
ve bsdiff
oldukça ikili olduğunu. bdiff
Heirloom 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 diff
programa girişlerinin sıralandığını bildirmesi çok büyük bir hızlanma sağlar. diff
Böyle bir seçeneğe sahip olan hiçbir şey bilmiyorum ama comm
sıralanan girdiler varsayar ve amaçlarınız için yeterli olursa daha hızlı olur.
comm
Bunun için harika çalıştı, daha önce hiç duymadım ama görünüşe göre çekirdeklerinde kaldı.
mkfifo
oluş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.sorted
sort
sort
&