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?

Tony
źródło

Odpowiedzi:

40

jeśli masz zip,

zip myzip.zip cvd*.txt

Nie musisz tarich najpierw.


źródło
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

SiegeX
źródło
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

Dan Fego
źródło
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ć.

Joe
źródło
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
Vahid F.
źródło
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.

Sairam Krish
źródło
Odpowiedziałem już w superuser.com/a/334830/107419
prayagupd