Dizinde bazı sıralanmış, gziplenmiş dosyalar var. Bazılarını bir başka sıralanmış, gzipli dosyaya nasıl eklerim? Şu anda açık fifos kullanıyorum. Bash'ta bunu yapmanın bir yolu var mı? Ben biraz bash noob'um, bu yüzden lütfen benim tarzım eksikliğimi affedin.Sıralanan dosyaları fifos ile birleştirmek
#!/bin/bash
# Invocation ./merge [files ... ]
# Turns an arbitrary set of sorted, gzipped files into a single sorted, gzipped file,
# printed to stdout. Redirect this script's output!
for f in [email protected]
do
mkfifo $f.raw
gzcat $f > $f.raw &
# sort -C $f.raw
done
sort -mu *.raw | gzip -C# prints to stdout.
rm -f *.raw
Ben bir şey gibi dönüştürmek amacıyla arıyorum ...
sort -mu <(gzcat $1) <(gzcat $2) <(gzcat $3) ... | gzip -9C# prints to stdout.
... ama nasıl olduğunu bilmiyorum. Parametreleri dizeye oluşturmak için bir döngüye ihtiyacım var mı? Bunun için bir çeşit sihirli kısayol var mı? Belki map gzcat [email protected]
?
NOT: Her bir dosya 10 GB'yi (ve 100 GB'lık açılmamış) aşıyor. 2TB sürücüm var, bu gerçekten sorun değil. Ayrıca, bu program O (n) 'de çalışması GEREKTİRİR veya uygun olmayan hale gelir. Benim için
ben yanıtlayan iken soruyu düzenlenmiş bkz . –