Wie kann ich mehrere Dateien in eine gz-Datei gzipen?

74

Ich habe 100 Dateien: cvd1.txt, cvd2.txt...cvd100.txt

Wie man gzip100 Dateien in eine .gzDatei packt, damit ich gunzipsie, nachdem ich sie habe cvd1.txt, cvd2.txt... cvd100.txtgetrennt habe?

Tony
quelle

Antworten:

40

wenn du zip hast,

zip myzip.zip cvd*.txt

Brauchen sie nicht tarzuerst.


quelle
1
@ Kurumi - Erkennen Windows-Programme wie Winzip oder 7-zip ZIP-Dateien?
1
@ Tony. Ich glaube sie tun es. Ich habe die 7-Zip-Linux-Version mit Zip getestet und kann extrahieren. Wenn Sie möchten, gibt es auch GNU zip für Windows.
Sie verlieren zgrep, zcmp, zdiffund alle Arten von Werkzeugen , die an Rohren nach Ihrer Wahl eines nicht-streambare Format arbeiten können genannt Reißverschluss. Hauptbenutzer verwenden Pipes.
Tankman 六四
83

Du willst tardeine Dateien zusammen und gzipdie daraus resultierende TAR-Datei.

tar cvzf cvd.tar.gz cvd*.txt

So entpacken Sie die gzip'd tar-Datei:

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

Dies würde Ihre Dateien unter dem /path/to/parent/dirVerzeichnis extrahieren

SiegeX
quelle
6
Wenn Sie die Datei mit der Endung .tgz (kurz für tar gz) benennen, erkennen Windows-Programme sie als etwas, das winzip etc so verarbeiten kann, wie es ist. Herzlichen Glückwunsch an SiegeX für Ihre 10K!
Shellter
23

Sie möchten tar wie folgt verwenden:

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

tar fügt die Dateien zusammen, während gzip die Komprimierung durchführt.

Quoth the gzip manpage:

Wenn Sie eine einzelne Archivdatei mit mehreren Mitgliedern erstellen möchten, damit die Mitglieder später unabhängig voneinander extrahiert werden können, verwenden Sie einen Archivierer wie tar oder zip. GNU tar unterstützt die Option -z, um gzip transparent aufzurufen. gzip wurde als Ergänzung zu Teer und nicht als Ersatz entwickelt

Dan Fego
quelle
13

gzip selbst weiß nichts über die Dateistruktur. Um das zu tun, was Sie wollen, müssen Sie die Dateien zuerst in eine Art Container-Datei (z. B. eine Tar-Struktur oder ähnliches) kopieren und diese dann gzipen. Zu diesem Zweck verfügt tar auf GNU-Plattformen über Schalter z und j (für bzip2).

Joe
quelle
2
Der Schalter ist eigentlich 'z' ('x' ist für den Auszug). Schön, dass du 'j' / bzip2 erwähnt hast - eine viel engere Komprimierung.
5

Sie können es tun, indem Sie:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

oder

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

oder

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
quelle
Ich glaube nicht, dass Ihr erster Befehl funktioniert. Zumindest allgemein. Wenn es für eine bestimmte Shell funktioniert, sollten Sie es angeben. Ich würde abstimmen, wenn ich genug Repräsentanten hätte.
DPM
@DPM ist richtig, die gzip/gunzipBefehle haben nicht funktioniert, es wird den Fehler zurückgebengzip: my_final_filename.gz: No such file or directory
Bilal
1

Um mehrere Dateien mit unterschiedlichen Mustern zu komprimieren, könnten wir Folgendes tun:

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

Dadurch werden alle .yml-Dateien, die mit Alice beginnen, aus einem beliebigen Unterverzeichnis und alle .json-Dateien, die mit Bob beginnen, aus einem beliebigen Unterverzeichnis hinzugefügt.

Sairam Krish
quelle
Bereits beantwortet in superuser.com/a/334830/107419
prayagupd