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

  • gunzip */*.gz?

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *