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

  • gunzip */*.gz?

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *