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

  • gunzip */*.gz?

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *