Tengo un directorio donde hay varias carpetas, cada una de las cuales contiene un archivo .gz. ¿Cómo puedo descomprimirlos todos a la vez?
Mis datos se ven así
Lista de carpetas
A B C D
En cada uno de ellos hay un archivo como
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Comentarios
Respuesta
Esto usa gunzip
para descomprimir todos los archivos en una carpeta y tener el final .out.gz
gunzip */*.out.gz
Esto hará un «bucle» * a través de todas las carpetas que tienen un archivo comprimido. Permítanme agregar un ejemplo:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
Usando el comando anterior, a.out.gz
b.out.gz
c.out.gz
d.out.gz
se descomprimirán todos, pero no se tocarán e.out
ya que no está comprimido.
* esto se llama globbing o expansión de nombre de archivo . Es posible que desee leer un poco más al respecto aquí .
Comentarios
- Pero, ¿qué pasa si tengo varias carpetas, cada una de las cuales contiene un archivo zip? ¿Cómo puedo recorrer todas las carpetas?
-
*/*.out.gz
recorrerá todas las carpetas (es ' el*/
part) - @HoHoHo, como señalan mazs, esto hace " bucle ". ' he añadido una explicación adicional y un enlace a una página que explica más el concepto 🙂
Respuesta
find . -type f -name "*.gz" -execdir gunzip {} \;
la opción execdir para buscar causa «find» a «cd» en cada directorio y ejecuta el comando exec (gunzip en este caso) y luego «cd» de nuevo al cwd
gunzip */*.gz
?