¿Cómo puedo extraer múltiples archivos gzip en directorios y subdirectorios?

10

He intentado ambos gzipy gunzipcomandos pero recibo cualquiera

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Si pruebo la -fopción, me lleva mucho tiempo trabajar en un solo archivo y el comando no se ejecuta correctamente. ¿Me estoy perdiendo de algo?

Herman Toothrot
fuente
1
¿El directorio contiene archivos .gz cuyos nombres comienzan con guiones, como -Y.something.gz? Si es así, es posible que necesite usar la --bandera de Gnu para asegurarse de que se traten como nombres de archivo en lugar de opciones, es decirgunzip -- *.gz
steeldriver el
@steeldriver sí, tengo algunos archivos que comienzan con -
Herman Toothrot el
eso causó al menos uno de los dos problemas.
Herman Toothrot el

Respuestas:

16

Puedes usar el siguiente comando.

Vaya al directorio donde está su .gzarchivo y ejecute el comando:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Extraerá todos los archivos con el nombre original y lo almacenará en el directorio de inicio del usuario actual ( /home/username). Puedes cambiarlo a otro lugar.

EDITAR:

gunzip *.gz

Este comando también funcionará. Pero, por defecto, reemplaza el archivo original.

pl_rock
fuente
¿Has leído lo que escribí en mi pregunta? gunzip * .gz no funciona para mí. Pero el ciclo for funciona, estoy perplejo.
Herman Toothrot
pero está funcionando para mí y para otros también por qué está mostrando `opción no válida - 'Y' ' Creo que tu formato de archivo no está bien o te falta algo en el comando.
pl_rock
4

Opción n. ° 1 : descomprima varios archivos con comillas simples (versión corta)

gunzip '*.gz'

Tenga en cuenta que la *.gzpalabra se coloca entre dos comillas simples, por lo que Shell no la reconocerá como un carácter comodín.

Opción n. ° 2 : descomprima varios archivos usando shell for loop (versión larga)

for g in *.gz; do gunzip $g; done

La fuente

EDITAR:

Acabo de probar:

gunzip -dk *.gz

Y funcionó.

-ddescomprimir y kmantener archivos originales.

Bilal
fuente
¿Has comprobado gunzip ‘*.gz’ este comando? No puedo ejecutar este comando. Está dando error.
pl_rock
use gunzip '*.gz'not gunzip ‘*.gz’ ( ' 'not `` ``)
Bilal
Acabo de copiar pegar su comando y dar gzip: *.gz: No such file or directorynuevo también no funciona. has intentado?
pl_rock
No funciona gunzip '* .gz' gzip: * .gz: No existe tal archivo o directorio
Herman Toothrot
Lo siento, no lo intenté! Estoy en Windows ahora mismo :(
Bilal
0

Usuarios de Linux:

Use el siguiente comando para extraer la cantidad mínima de archivos .gz en el directorio actual y sus subdirectorios

gunzip *.gz

Use el siguiente comando para extraer cualquier número de archivos .gz en el directorio actual y sus subdirectorios

sudo find . -name "*.gz" | xargs gunzip
kmsvignesh
fuente