it-swarm.com.de

GZip jede Datei separat

Wie können wir jede Datei einzeln komprimieren?

Ich möchte nicht alle Dateien in einem großen Teer haben.

27
Tonio

Sie können gzip * verwenden


Hinweis:

  • Dies komprimiert jede Datei einzeln undLÖSCHTdas Original.
  • Verwenden Sie die Option -k (--keep), um die Originaldateien beizubehalten.
  • Dies funktioniert möglicherweise nicht, wenn Sie aufgrund der Einschränkungen der Shell über eine große Anzahl von Dateien verfügen
  • Um gzip parallel auszuführen siehe @ MarkSetchells Antwort unten .
58

Einfache und sehr schnelle Antwort, bei der alle CPU-Kerne gleichzeitig verwendet werden:

parallel gzip ::: *

GNU Parallel ist ein fantastisches Werkzeug, das in dieser Welt, in der CPUs nur mehr Kerne anstatt mehr Geschwindigkeit erhalten, weitaus häufiger zum Einsatz kommen sollte. Es gibt jede Menge Beispiele, die wir alle gut tun würden, um 10 Minuten zum Lesen zu brauchen ... hier

20
Mark Setchell

Nach sieben Jahren hat dieser hochgelobte Kommentar immer noch keine vollwertige Antwort. Deshalb mache ich jetzt Werbung für ihn:

gzip -r .

Dies hat zwei Vorteile gegenüber der derzeit akzeptierten Antwort: Es funktioniert rekursiv, wenn es Unterverzeichnisse gibt, und es wird kein Fehler von Argument list too long auftreten, wenn die Anzahl der Dateien sehr groß ist.

15
leekaiinthesky

Wenn Sie jede Datei rekursiv gzipen möchten, können Sie find piped to xargs verwenden:

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

Versuchen Sie es mit einer Schleife

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

Oder wenn Sie pigz haben (gzip-Dienstprogramm, das die Komprimierung über mehrere Prozessoren und Kerne hinweg parallelisiert)

pigz *
0
itsmisterbrown