web-dev-qa-db-fra.com

Gzip chaque fichier séparément

Comment pouvons-nous GZip chaque fichier séparément?

Je ne veux pas avoir tous les fichiers dans un gros tar.

38
Tonio

Vous pouvez utiliser gzip *


Remarque:

  • Cela compressera chaque fichier individuellement et [~ # ~] supprimera [~ # ~] l'original.
  • Utilisation -k (--keep) option pour conserver les fichiers d'origine.
  • Cela peut ne pas fonctionner si vous avez un grand nombre de fichiers en raison des limites du shell
  • Pour exécuter gzip en parallèle voir la réponse de @ MarkSetchell ci-dessous .
71
Courtney Faulkner

Réponse simple et très rapide qui utilisera tous vos cœurs CPU en parallèle:

parallel gzip ::: *

GNU Parallel est un outil fantastique qui devrait être utilisé beaucoup plus dans ce monde où les processeurs n'obtiennent que plus de cœurs plutôt que plus de vitesse. Il y a des tas d'exemples que nous ferions tous bien de prendre 10 minutes pour lire ... ici

37
Mark Setchell

Après sept ans, ce commentaire très voté n'a toujours pas sa propre réponse à part entière, donc je le fais maintenant:

gzip -r .

Cela présente deux avantages par rapport à la réponse actuellement acceptée: cela fonctionne récursivement s'il y a des sous-répertoires, et il n'échouera pas à partir de Argument list too long si le nombre de fichiers est très important.

25
leekaiinthesky

Si vous voulez gziper chaque fichier récursivement, vous pouvez utiliser find piped to xargs:

$ find . -type f -print0 | xargs -0r gzip
14
Buddy

Essayez une boucle

$ for file in *; do gzip "$file"; done
7
Federico Giorgi

Ou, si vous avez pigz (utilitaire gzip qui parallélise la compression sur plusieurs processeurs et cœurs)

pigz *
2
itsmisterbrown