Çok önemli olacağından şüpheliyim.
Liste dosyasında kaç dosya listelendiğini bilmediğim için bir döngü kullanırdım ve dosya adlarından herhangi birinin adlarında boşluk olup olmadığını bilmiyorum (genellikle). Çok uzun bir argüman listesi oluşturacak bir komut değişikliği yapmak, oluşturulan listenin uzunluğu çok uzun olduğunda "Bağımsız değişken listesi çok uzun" hatasına neden olabilir.
Döngüm şöyle görünecekti
while IFS= read -r name; do
gunzip "$name"
done <file.list
Bu ayrıca, gunzipkomuttan sonra verileri işlemek için komutlar eklememe izin verir . Aslında, verinin gerçekte ne olduğuna ve onunla ne yapılması gerektiğine bağlı olarak, hiç bir dosyaya kaydetmeden işlemek bile mümkün olabilir:
while IFS= read -r name; do
zcat "$name" | process_data
done <file.list
( process_datasıkıştırılmamış verileri standart girdiden okuyan bir boru hattı nerede )
Verilerin işlenmesi sıkıştırılmamasından daha uzun sürerse, bir döngünün daha verimli olup olmadığı sorusu önemsiz hale gelir.
İdeal olarak , bir dosya adları listesini çalışmamayı tercih ederim ve bunun yerine bir dosya adı globbing kalıbı kullanmayı tercih ederim.
for name in ./*.gz; do
# processing of "$name" here
done
Burada ./*.gz, ilgili dosyalarla eşleşen bir model var. Bu şekilde dosya sayısına veya dosya adlarında kullanılan karakterlere bağlı değiliz (yeni satırlar veya diğer boşluk karakterleri içerebilir veya çizgilerle başlayabilir vb.)
İlişkili:
gzipsisteminizde ne kadar sürede başlayacağına , dosya listesindeki dosya sayısına ve bu dosyaların boyutuna bağlıdır.