2009-11-24 22 views

Respuesta

51

Puede utilizar gzip *


Nota:

  • Esto le zip cada archivo de forma individual y BORRAR el original.
  • Utilice la opción -k (--keep) para conservar los archivos originales.
  • Esto puede no funcionar si usted tiene un gran número de archivos debido a los límites de la cáscara
  • Para ejecutar gzip en paralelo see @MarkSetchell's answer below.
2

Pruebe un bucle

$ for file in *; do gzip "$file"; done 
13

Si desea gzip todos los archivos de forma recursiva, se puede usar encuentra canalizado a xargs:

$ find . -type f -print0 | xargs -0r gzip 
+10

No hay necesidad de encontrar + xargs. Gzip puede manejar la recursividad en sí: 'gzip -9r .' – Idelic

+2

Como siempre,' find. -type f -print0 | xargs -0r gzip' es mejor. – musiphil

+1

Para el equivalente de 'gzip *', también puede necesitar '-maxdepth 1' en' find'. – musiphil

6

Fácil y respuesta muy rápida que utilizarán todos sus núcleos de CPU en paralelo:

parallel gzip ::: * 
+0

¡Eh, esta respuesta necesita más votos ascendentes! – zx8754

+1

@ zx8754 ** GNU Parallel ** es una herramienta fantástica que se debe utilizar mucho más en este mundo en el que las CPU solo obtienen más núcleos en lugar de más velocidad. Hay un montón de ejemplos que todos haríamos bien en tomar 10 minutos para leer ... https://www.gnu.org/software/parallel/parallel_tutorial.html –

+0

¡Sabía sobre el paralelo, pero no olvide utilizarlo! Corrió la respuesta aceptada y luego se desplazó hacia abajo para ver su respuesta ... ¡ahorró muchas horas! ¿Tal vez sea una buena idea hacer que su comentario edite su respuesta? – zx8754

7

Después de siete años, este comentario altamente votado todavía no tiene su propia respuesta completa, así que lo estoy promoviendo ahora:

gzip -r .

Esto tiene dos ventajas sobre la respuesta actualmente aceptada: funciona recursivamente si hay subdirectorios, y no fallará desde Argument list too long si la cantidad de archivos es muy grande.

Cuestiones relacionadas