Ik heb een map met meerdere mappen, elke map bevat een .gz-bestand. Hoe kan ik ze allemaal tegelijk uitpakken?
Mijn gegevens zien er als volgt uit
Lijst met mappen
A B C D
In elk van hen is er een bestand als
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Reacties
Antwoord
Dit gebruikt gunzip
om alle bestanden in een map uit te pakken en het einde te hebben .out.gz
gunzip */*.out.gz
Dit zal “loop” * door alle mappen met een gecomprimeerd bestand. Laat me een voorbeeld toevoegen:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
Met de bovenstaande opdracht a.out.gz
b.out.gz
c.out.gz
d.out.gz
worden allemaal uitgepakt, maar “raakt e.out
omdat het niet is “gezipt.
* dit wordt globbing of bestandsnaamuitbreiding genoemd. Misschien wil je er hier wat meer over lezen.
Reacties
- Maar wat als ik meerdere mappen heb die elk een zip-bestand bevatten? Hoe kan ik alle mappen doorlopen?
- de
*/*.out.gz
zal alle mappen herhalen (het ' is de*/
part) - @HoHoHo zoals mazs aangeeft, dit doet " lus ". Ik ' heb wat extra uitleg toegevoegd en een link naar een pagina die het concept verder uitlegt 🙂
Antwoord
find . -type f -name "*.gz" -execdir gunzip {} \;
de execdir-optie om oorzaken “find” naar “cd” in elke map te vinden en voer het exec-commando uit (gunzip in dit geval) en dan “cd” terug naar de cwd
gunzip */*.gz
?