Jak zgzipować wiele plików w jeden plik gz?


74

Mam 100 plików: cvd1.txt, cvd2.txt...cvd100.txt

Jak gzip100 plików w jeden .gzplik, tak, że po gunzipto, powinienem mieć cvd1.txt, cvd2.txt... cvd100.txtosobno?

Odpowiedzi:


40

jeśli masz zip,

zip myzip.zip cvd*.txt

Nie musisz tarich najpierw.


1
@ Kurumi- Czy programy Windows, takie jak Winzip lub 7-zip, rozpoznają pliki .zip?

1
@Tony. Wierzę, że tak. Przetestowałem wersję 7-zip Linux z zip i w stanie wyodrębnić. Jeśli chcesz, istnieje także GNU zip dla systemu Windows.

Tracisz zgrep, zcmp, zdiffi wszelkiego rodzaju narzędzi, które mogą pracować na rurach o swoim wyborze zakaz przesyłania strumieniowego formacie zip o nazwie. Zaawansowani użytkownicy używają rur.
Tankman 六四

83

Chcesz tarpołączyć swoje pliki i gzipwynikowy plik tar.

tar cvzf cvd.tar.gz cvd*.txt

Aby rozpakować plik tar gzip'd, wykonaj:

tar xvzf cvd.tar.gz -C /path/to/parent/dir

Spowoduje to wyodrębnienie plików z /path/to/parent/dirkatalogu


6
jeśli nazwiesz plik z rozszerzeniem .tgz, (skrót od tar gz), wówczas programy Windows rozpoznają go jako coś, co winzip itp. może przetworzyć w obecnej postaci. Gratulacje dla SiegeX za 10K!
łowca

23

Będziesz chciał użyć tar:

tar -czvf file.tar.gz cvd*.txt

tar łączy pliki razem, a gzip następnie kompresuje.

Quoth the gzip man:

Jeśli chcesz utworzyć pojedynczy plik archiwum z wieloma członkami, aby umożliwić późniejsze wyodrębnienie członków, użyj archiwizatora, takiego jak tar lub zip. GNU tar obsługuje opcję -z w celu transparentnego wywołania gzip. gzip został zaprojektowany jako uzupełnienie tar, a nie jako zamiennik


13

Sam gzip nie wie nic o strukturze plików. Aby zrobić to, co chcesz, musisz najpierw umieścić pliki w jakimś pliku kontenera (np. Struktura tar lub podobna), a następnie zgzipować. tar ma przełączniki z i j (dla bzip2) na platformach GNU, aby to zrobić.


2
Przełącznik to w rzeczywistości „z” („x” oznacza wyodrębnianie). Miło wspominałeś o „j” / bzip2 - znacznie ściślejszej kompresji.

5

Możesz to zrobić za pomocą:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

lub

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

lub

tar cvzf my_final_filename.tar.gz my_first_file my_second_file ... my_last_file

tar -czvf my_final_filename.tar.gz

Nie wydaje mi się, żeby twoje pierwsze polecenie działało. Przynajmniej ogólnie. Jeśli to działa dla konkretnej powłoki, powinieneś to zaznaczyć. Oddałbym głos, gdybym miał wystarczająco dużo przedstawicieli.
DPM

@DPM ma rację, gzip/gunzippolecenia nie działały, zwróci błądgzip: my_final_filename.gz: No such file or directory
Bilal

1

Aby skompresować wiele plików o różnych wzorach, możemy:

tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json

spowoduje to dodanie wszystkich plików .yml, które zaczynają się od Alice z dowolnego podkatalogu, i doda wszystkie pliki .json, które zaczynają się od Bob z dowolnego podkatalogu.


Odpowiedziałem już w superuser.com/a/334830/107419
prayagupd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.