come posso estrarre più file gzip nella directory e nelle sottodirectory?


10

Ho provato entrambi gzipe gunzipcomandi, ma io ottenere sia

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

Se provo l' -fopzione, ci vuole molto tempo per lavorare su un singolo file e il comando non viene eseguito correttamente. Mi sto perdendo qualcosa?


1
La directory contiene file .gz i cui nomi iniziano con trattini, come -Y.something.gz? In tal caso, potresti aver bisogno di usare il --flag Gnu per assicurarti che siano trattati come nomi di file piuttosto che come opzioni, ad esempiogunzip -- *.gz
steeldriver,

@steeldriver sì, ho alcuni file che iniziano con -
Herman Toothrot,

quello ha causato almeno uno dei due problemi.
Herman Toothrot,

Risposte:


16

È possibile utilizzare il comando seguente.

Vai alla directory in cui si trova il tuo .gzfile ed esegui il comando:

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

Estraerà tutti i file con il nome originale e li memorizzerà nella home directory dell'utente corrente ( /home/username). Puoi cambiarlo da qualche altra parte.

MODIFICARE :

gunzip *.gz

Anche questo comando funzionerà. Ma, per impostazione predefinita, sostituisce il file originale.


Hai letto cosa ho scritto nella mia domanda? gunzip * .gz non funziona per me. Ma il ciclo for funziona, sono perplesso.
Herman Toothrot,

ma funziona anche per me e per gli altri perché mostra `opzione non valida - 'Y'`. penso che il tuo formato di file non sia ok o ti manchi qualcosa al comando.
pl_rock,


4

Opzione n. 1 : decomprimere più file utilizzando la virgoletta singola (versione corta)

gunzip '*.gz'

Nota che la *.gzparola viene inserita tra due virgolette singole, in modo che la shell non la riconosca come carattere jolly.

Opzione 2 : decomprimere più file usando shell per loop (versione lunga)

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

La fonte

MODIFICARE :

Ho appena provato:

gunzip -dk *.gz

e ha funzionato.

-ddecomprimere e kconservare i file originali.


hai controllato gunzip ‘*.gz’ questo comando. non sono in grado di eseguire questo comando. dando errore.
pl_rock,

use gunzip '*.gz'not gunzip ‘*.gz’ ( ' 'not `` ``)
Bilal

sto solo copiando incollando il tuo comando e dando gzip: *.gz: No such file or directorynuovo anche non funziona. hai provato?
pl_rock,

Non funziona gunzip '* .gz' gzip: * .gz: nessun file o directory simile
Herman Toothrot,

Scusa, non l'ho capito! sono su Windows in questo momento :(
Bilal

0

Utenti Linux:

Utilizzare il seguente comando per estrarre la quantità minima di file .gz nella directory corrente e nelle sue sottodirectory

gunzip *.gz

Utilizzare il seguente comando per estrarre un numero qualsiasi di file .gz nella directory corrente e nelle sue sottodirectory

sudo find . -name "*.gz" | xargs gunzip
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.