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

  • gunzip */*.gz?

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *