La compresión de archivos es una forma de crear archivos que nos ayudan a ahorrar tiempo, crear espacio y descargar y transferir software y datos más rápido. Puede usar un archivo comprimido para distribuir archivos relacionados en Internet, todos comprimidos en un solo archivo, sin pérdida de datos. Si necesita espacio en su sistema o en un dispositivo de almacenamiento externo, puede comprimir archivos en archivos comprimidos más pequeños. A veces tenemos que extraer varios archivos comprimidos y rar'd a la vez, todos ubicados en una sola carpeta. Hacerlo a través de la interfaz de usuario de Linux es bastante simple; todo lo que necesita hacer es seleccionar todos los archivos que desea extraer, hacer clic con el botón derecho y usar la opción de extracción para extraerlos por completo. El verdadero problema es cuando queremos hacer la misma tarea a través de la línea de comandos. Puede resultar bastante largo, y francamente ilógico, extraer uno por uno ingresando los comandos de extracción de archivos uno por uno. Aquí viene el bucle for de bash para rescatar. Puede usarlo para realizar múltiples operaciones similares a la vez.
Este artículo describe cómo puede usar el bucle for en el shell bash para extraer varios archivos de los siguientes tipos a través de la línea de comandos de Debian:
- Archivos comprimidos
- Archivos tar.xz
- Archivos rar
- archivos 7z
Hemos ejecutado los comandos y procedimientos mencionados en este artículo en un sistema Debian 10 Buster. Estamos usando la aplicación Terminal como la línea de comandos de Debian. Puede abrirlo a través de la búsqueda del Lanzador de aplicaciones de la siguiente manera:
Se puede acceder al Iniciador de aplicaciones usando la tecla Windows/Super en su teclado.
Descomprimir varios archivos a la vez
Supongamos que una carpeta, una carpeta “zip_files” en nuestro caso, contiene varios archivos comprimidos y queremos extraerlos simultáneamente.
Así es como puede usar el bucle for para simplificar la tarea:
$ for z in *.zip do unzip $z; done
Así es como puede lograr la misma tarea con un solo comando:
$ for z in *.zip; do unzip "$z"; done
Extraiga varios archivos tar.xz a la vez
Supongamos que una carpeta contiene varios archivos tar.xz y queremos extraerlos simultáneamente.
Así es como puede usar el bucle for para simplificar la tarea:
$ for z in *.tar.xz do tar -xf $z; done
Así es como puede lograr la misma tarea con un solo comando:
$ for z in *.tar.xz; do tar -xf "$z"; done
Descomprimir varios archivos a la vez
Utilice el siguiente comando para descomprimir varios archivos rar a la vez.
$ for z in *.rar do unrar e $z; done
O,
$ for f in *.rar; do unrar e “$f”; done
Extrae varios archivos 7z a la vez
Utilice el siguiente comando para extraer varios archivos 7z a la vez.
$ for z in *.7z do 7z e $z; done
O,
$ for z in *.7z; do 7z e "$z"; done
Mediante el uso de bash for loop, puede realizar la frenética tarea de extraer varios archivos comprimidos, todos a la vez. Esta pequeña habilidad que aprendiste en este artículo es especialmente útil cuando tenemos que extraer hasta cientos de archivos comprimidos simultáneamente. No solo para la extracción de archivos, sino que también puede usar el poder del ciclo bash 'for' para realizar otras tareas similares que pueden llevar más tiempo cuando las ejecuta una por una.