Am un director în care există mai multe foldere, fiecare din dosare conține un fișier .gz. Cum le pot dezarhiva pe toate simultan?
Datele mele arată astfel
Lista dosarelor
A B C D
În fiecare dintre ele există un fișier ca
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Comentarii
Răspuns
Aceasta folosește gunzip
pentru a dezarhiva toate fișierele dintr-un folder și au finalul .out.gz
gunzip */*.out.gz
Aceasta va „bucla” * prin toate folderele care au un fișier comprimat în ele. Permiteți-mi să adaug un exemplu:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
Folosind comanda de mai sus, a.out.gz
b.out.gz
c.out.gz
d.out.gz
va fi dezarhivat, dar nu va fi atins e.out
deoarece nu este arhivat.
* aceasta se numește globbing sau expansiune nume de fișier . S-ar putea să doriți să citiți mai multe despre asta aici .
Comentarii
- Dar dacă am mai multe foldere, fiecare dintre acestea conținând fișier zip. Cum pot face o buclă prin toate folderele?
-
*/*.out.gz
va bucla toate folderele (' este*/
parte) - @HoHoHo după cum subliniază mazs, aceasta face " buclă ". Am ' am adăugat câteva explicații suplimentare și un link către o pagină care explică în continuare conceptul 🙂
Răspuns
find . -type f -name "*.gz" -execdir gunzip {} \;
opțiunea execdir pentru a găsi cauzează „găsi” la „cd” în fiecare director la rândul său și executați comanda exec (gunzip în acest caz) și apoi „cd” înapoi la cwd
gunzip */*.gz
?