Dubito che importerebbe molto.
Vorrei usare un ciclo, solo perché non so quanti file sono elencati nel file elenco e non (in genere) so se qualcuno dei nomi di file ha spazi nei loro nomi. La sostituzione di un comando che genererebbe un elenco di argomenti molto lungo può causare un errore "Elenco argomenti troppo lungo" quando la lunghezza dell'elenco generato è troppo lunga.
Il mio ciclo sarebbe simile
while IFS= read -r name; do
gunzip "$name"
done <file.list
Ciò mi consentirebbe inoltre di inserire comandi per l'elaborazione dei dati dopo il gunzip
comando. In effetti, a seconda di cosa siano effettivamente i dati e cosa debba essere fatto con essi, potrebbe anche essere possibile elaborarli senza salvarli su file:
while IFS= read -r name; do
zcat "$name" | process_data
done <file.list
(dov'è process_data
una pipeline che legge i dati non compressi dall'input standard)
Se l'elaborazione dei dati richiede più tempo rispetto alla loro decompressione, la questione se un ciclo sia più efficiente o meno diventa irrilevante.
Idealmente , preferirei non lavorare su un elenco di nomi di file, e invece utilizzare un modello globbing di nome file, come in
for name in ./*.gz; do
# processing of "$name" here
done
dove ./*.gz
è un modello che corrisponde ai file pertinenti. In questo modo non dipendiamo dal numero di file né dai caratteri utilizzati nei nomi dei file (possono contenere righe o altri caratteri spazi bianchi o iniziare con trattini, ecc.)
Relazionato:
gzip
sul sistema, dal numero di file nell'elenco dei file e dalle dimensioni di tali file.