Ho una directory in cui sono presenti più cartelle, ciascuna delle quali contiene un file .gz. Come posso decomprimerli tutti in una volta?
I miei dati hanno questo aspetto
Elenco di cartelle
A B C D
In ognuno di essi è presente il file
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Commenti
Risposta
Questo utilizza gunzip
per decomprimere tutti i file in una cartella e avere la fine .out.gz
gunzip */*.out.gz
Questo “loop” * attraverso tutte le cartelle che contengono un file zippato. Vorrei aggiungere un esempio:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
utilizzando il comando precedente, a.out.gz
b.out.gz
c.out.gz
d.out.gz
verrà decompresso, ma non verrà “t touch e.out
poiché non è zippato.
* questo è chiamato globbing o espansione del nome di file . Potresti leggere qualcosa in più a riguardo qui .
Commenti
- Ma cosa succede se ho più cartelle ognuna delle quali contiene file zip. Come faccio a scorrere tutte le cartelle?
-
*/*.out.gz
eseguirà il ciclo di tutte le cartelle (' è il*/
part) - @HoHoHo come sottolineano mazs, questo " loop ". ' ho aggiunto qualche spiegazione extra e un collegamento a una pagina che spiega ulteriormente il concetto 🙂
Risposta
find . -type f -name "*.gz" -execdir gunzip {} \;
lopzione execdir per trovare causa “find” a “cd” in ogni directory a turno ed esegui il comando exec (gunzip in questo caso) e poi “cd” di nuovo al cwd
gunzip */*.gz
?