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