Jeg har et bibliotek, hvor der er flere mapper, hver af mapperne indeholder en .gz-fil. Hvordan kan jeg pakke dem alle ud på én gang?

Mine data ser sådan ud

Liste over mapper

A B C D 

I hver af dem er der filer som

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

Kommentarer

  • gunzip */*.gz?

Svar

Dette bruger gunzip for at pakke alle filer ud i en mappe og få slutningen .out.gz

gunzip */*.out.gz 

Dette vil “loop” * gennem alle mapper, der har en zip-fil i. Lad mig tilføje et eksempel:

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

Brug kommandoen ovenfor a.out.gz b.out.gz c.out.gz d.out.gz bliver alle pakket ud, men det vil ikke røre e.out da det ikke er lynlås.

* kaldes dette globbing eller filnavnudvidelse . Du kan godt lide at læse mere om det her .

Kommentarer

  • Men hvad nu hvis jeg har flere mapper, som hver indeholder zip-fil. Hvordan kan jeg løbe gennem alle mapper?
  • */*.out.gz løkker alle mapper (det ' er */ del)
  • @HoHoHo som mazs påpeger, dette gør " loop ". Jeg ' har tilføjet nogle ekstra forklaringer og et link til en side, der yderligere forklarer konceptet 🙂

Svar

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

execdir-indstillingen for at finde årsager “find” til “cd” i hver mappe igen og kør exec-kommandoen (gunzip i denne sag) og derefter “cd” tilbage til cwd

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *