Saya ragu itu akan sangat berarti.
Saya akan menggunakan loop, hanya karena saya tidak tahu berapa banyak file yang terdaftar dalam file daftar, dan saya tidak (umumnya) tahu jika ada nama file yang memiliki spasi dalam namanya. Melakukan substitusi perintah yang akan menghasilkan daftar argumen yang sangat panjang dapat menghasilkan kesalahan "Daftar argumen terlalu panjang" ketika panjang daftar yang dihasilkan terlalu panjang.
Lingkaran saya akan terlihat seperti
while IFS= read -r name; do
gunzip "$name"
done <file.list
Ini juga akan memungkinkan saya untuk memasukkan perintah untuk memproses data setelah gunzip
perintah. Faktanya, tergantung pada apa sebenarnya data itu dan apa yang perlu dilakukan dengannya, bahkan mungkin untuk memprosesnya tanpa menyimpannya sama sekali:
while IFS= read -r name; do
zcat "$name" | process_data
done <file.list
(di mana process_data
ada beberapa pipa yang membaca data yang tidak terkompresi dari input standar)
Jika pemrosesan data membutuhkan waktu lebih lama daripada pengompresannya, pertanyaan apakah perulangan lebih efisien atau tidak menjadi tidak relevan.
Idealnya , saya lebih suka untuk tidak bekerja dari daftar nama file, dan alih-alih menggunakan pola globbing nama file, seperti pada
for name in ./*.gz; do
# processing of "$name" here
done
di mana ./*.gz
beberapa pola yang cocok dengan file yang relevan. Dengan cara ini kita tidak tergantung pada jumlah file atau karakter yang digunakan dalam nama file (mereka mungkin berisi baris baru atau karakter spasi putih lainnya, atau mulai dengan tanda hubung, dll.)
Terkait:
gzip
pada sistem Anda, jumlah file dalam daftar file dan ukuran file-file itu.