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
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
gunzip */*.gz
?