GNU/Linux >> Tutoriales Linux >  >> Linux

Comprima cada archivo en un directorio en su propio archivo comprimido

Solución 1:

Poner cada archivo en un archivo tar separado no tiene ningún sentido en este escenario. Puedes usar gzip para comprimirlos directamente:

gzip *

dará como resultado file1.out.gz , file2.out.gz etc

Usarías tar solo si necesita un archivo comprimido como un solo archivo.

Si necesita un archivo tar para cada archivo, puede crearlo así:

for i in *; do tar -czf $i.tar.gz $i; done

Solución 2:

Para construir sobre la respuesta de @SvenW (que solo funcionará en el directorio actual), si tiene una ENORME cantidad de archivos o desea hacerlo en una estructura de directorio recursiva, también puede usar

find . -type f -exec gzip \{\} \;

y si necesita colocar la salida en un directorio diferente (en este ejemplo, ../target ) y no desea eliminar los originales, puede hacer algo como:

find . -type f -print | while read fname ; do
    mkdir -p "../target/`dirname \"$fname\"`"
    gzip -c "$fname" > "../target/$fname.gz"
done

Linux
  1. ¿Copiar el contenido de un archivo en el portapapeles sin mostrar su contenido?

  2. Actualización de un solo archivo en un tar comprimido

  3. Exclusión de directorio al crear un archivo .tar.gz

  4. ¿Cómo comprimir varias carpetas, cada una en su propio archivo zip?

  5. Cómo convertir un archivo TAR en un archivo ISO

Cómo crear un archivo Tar Gz

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Tar:¿Extraer un solo archivo a un directorio sin crear subcarpetas?

¿Cómo comprimir varios archivos en un archivo .xz?

Cómo comprimir/descomprimir en Linux

Comando tar de Linux para comprimir y extraer archivos