Mam katalog, w którym jest wiele folderów, z których każdy zawiera plik .gz. Jak mogę rozpakować je wszystkie naraz?
Moje dane wyglądają tak
Lista folderów
A B C D
W każdym z nich znajduje się plik jako
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Komentarze
Odpowiedź
Używana jest gunzip
, aby rozpakować wszystkie pliki w folderze i mieć końcówkę .out.gz
gunzip */*.out.gz
To będzie „pętla” * przez wszystkie foldery, które zawierają spakowany plik. Dodam przykład:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
Używając powyższego polecenia, a.out.gz
b.out.gz
c.out.gz
d.out.gz
zostanie rozpakowane, ale nie „t touch e.out
ponieważ nie jest „t skompresowany”.
* nazywa się to globowaniem lub rozwinięciem nazwy pliku . Możesz przeczytać więcej na ten temat tutaj .
Komentarze
- Ale co, jeśli mam wiele folderów, z których każdy zawiera plik zip. Jak mogę przejrzeć wszystkie foldery?
-
*/*.out.gz
zapętli wszystkie foldery (' to*/
część) - @HoHoHo, jak wskazuje Mazs, powoduje to " pętlę ". ' dodałem dodatkowe wyjaśnienie i link do strony, która dokładniej wyjaśnia koncepcję 🙂
Odpowiedź
find . -type f -name "*.gz" -execdir gunzip {} \;
opcja execdir, aby znaleźć przyczyny „find” do „cd” w każdym katalogu po kolei i uruchomić polecenie exec (gunzip w w tym przypadku), a następnie „cd” z powrotem do cwd
gunzip */*.gz
?