Comment gzip plusieurs fichiers dans un seul fichier gz?

74

J'ai 100 fichiers: cvd1.txt, cvd2.txt...cvd100.txt

Comment gzip100 fichiers dans un seul .gzfichier, de sorte qu'après que je gunzip, je devrais avoir cvd1.txt, cvd2.txt... cvd100.txtséparément?

Tony
la source

Réponses:

40

si vous avez zip,

zip myzip.zip cvd*.txt

Pas besoin d' tareux en premier.


la source
1
@ Kurumi- Les programmes Windows tels que Winzip ou 7-zip reconnaissent-ils les fichiers .zip?
1
@ Tony. Je crois qu'ils font. J'ai testé la version Linux 7 zip avec zip et capable d'extraire. Si vous voulez, il y a aussi GNU zip pour Windows.
Vous perdez zgrep, zcmp, zdiffet toutes sortes d'outils qui peuvent travailler sur des tuyaux par votre choix d'un format non-diffusable appelé zip. Les utilisateurs avec pouvoir utilisent des pipes.
Tankman 六四
83

Vous voulez tarregrouper vos fichiers et gziple fichier tar résultant.

tar cvzf cvd.tar.gz cvd*.txt

Pour décompresser le fichier gzip'd, procédez comme suit:

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

Cela extrairait vos fichiers sous le /path/to/parent/dirrépertoire

SiegeX
la source
6
si vous nommez le fichier avec l’extension .tgz (abréviation de tar gz), les programmes Windows le reconnaîtront comme quelque chose que Winzip, etc., peut traiter tel quel. Félicitations à SiegeX pour votre 10K!
shellter
23

Vous voudrez utiliser tar, comme ceci:

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

tar rassemble les fichiers, tandis que gzip effectue la compression.

La page de manuel gzip:

Si vous souhaitez créer un seul fichier archive avec plusieurs membres afin que les membres puissent ensuite être extraits indépendamment, utilisez un archiveur tel que tar ou zip. GNU tar prend en charge l’option -z pour appeler gzip de manière transparente. gzip est conçu comme un complément au goudron, pas comme un substitut

Dan Fego
la source
13

gzip en lui-même ne sait rien de la structure de fichier. Pour faire ce que vous voulez, vous devez d'abord placer les fichiers dans un type de fichier conteneur (par exemple, une structure tar ou similaire), puis gzip. tar a z et j (pour bzip2) des commutateurs sur les plateformes GNU pour le faire.

Joe
la source
2
Le commutateur est en fait 'z' ('x' est pour extraire). Bien, vous avez mentionné «j» / bzip2 - une compression beaucoup plus étroite.
5

Vous pouvez le faire en utilisant:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

ou

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

ou

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
la source
Je ne pense pas que votre premier commandement fonctionne. Au moins en général. Si cela fonctionne pour un shell particulier, vous devriez l'indiquer. Je voterais si j'avais assez de rep.
DPM
@DPM a raison, les gzip/gunzipcommandes ne fonctionnent pas, cela va retourner l'erreurgzip: my_final_filename.gz: No such file or directory
Bilal
1

Pour compresser plusieurs fichiers avec des modèles différents, nous pourrions ceci:

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

cela ajoutera tous les fichiers .yml qui commencent par Alice à partir de n'importe quel sous-répertoire et ajouter tous les fichiers .json commençant par Bob à partir de n'importe quel sous-répertoire.

Sairam Krish
la source
Déjà répondu à superuser.com/a/334830/107419
priagupd