Jeg har en katalog der det er flere mapper, hver av mappen inneholder en .gz-fil. Hvordan kan jeg pakke ut dem alle samtidig?

Dataene mine ser slik ut

Liste over mapper

A B C D 

I hver av dem er det filer som

A a.out.gz B b.out.gz C c.out.gz D d.out.gz 

Kommentarer

  • gunzip */*.gz?

Svar

Dette bruker gunzip for å pakke ut alle filene i en mappe og ha slutten .out.gz

gunzip */*.out.gz 

Dette vil «loop» * gjennom alle mappene som har en zip-fil. La meg legge til et eksempel:

A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out 

Ved å bruke kommandoen ovenfor, a.out.gz b.out.gz c.out.gz d.out.gz blir alle pakket ut, men det vil ikke berøre e.out siden det ikke er zippet.

* dette kalles globbing eller filnavnutvidelse . Du vil kanskje lese litt mer om det her .

Kommentarer

  • Men hva om jeg har flere mapper som hver inneholder zip-fil. Hvordan kan jeg gå gjennom alle mappene?
  • */*.out.gz sløyfer alle mappene (det ' er */ del)
  • @HoHoHo som mazs påpeker, dette gjør " loop ". Jeg ' har lagt til litt ekstra forklaring og en lenke til en side som ytterligere forklarer konseptet 🙂

Svar

find . -type f -name "*.gz" -execdir gunzip {} \; 

alternativet execdir for å finne årsaker «find» til «cd» i hver katalog i sin tur og kjør exec-kommandoen (gunzip in denne saken) og deretter «cd» tilbake til cwd

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *