comment puis-je extraire plusieurs fichiers gzip dans le répertoire et les sous-répertoires?

10

J'ai essayé les deux commandes gzipet gunzipmais j'obtiens

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 j'essaie l' -foption, il faut très longtemps pour travailler sur un seul fichier et la commande n'est pas exécutée avec succès. Suis-je en train de manquer quelque chose?

Herman Toothrot
la source
1
Le répertoire contient-il des fichiers .gz dont les noms commencent par des tirets, tels que -Y.something.gz? Si c'est le cas, vous devrez peut-être utiliser le --drapeau Gnu pour vous assurer qu'ils sont traités comme des noms de fichiers plutôt que comme des options, par exemplegunzip -- *.gz
Steeldriver
@steeldriver oui j'ai quelques fichiers commençant par -
Herman Toothrot
qui a causé au moins l'un des deux problèmes.
Herman Toothrot

Réponses:

16

Vous pouvez utiliser la commande ci-dessous.

Accédez au répertoire où se trouve votre .gzfichier et exécutez la commande:

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

Il extraira tous les fichiers avec le nom d'origine et les stockera dans le répertoire personnel de l'utilisateur actuel ( /home/username). Vous pouvez le changer ailleurs.

ÉDITER :

gunzip *.gz

Cette commande fonctionnera également. Mais, par défaut, il remplace le fichier d'origine.

pl_rock
la source
Avez-vous lu ce que j'ai écrit dans ma question? gunzip * .gz ne fonctionne pas pour moi. Mais la boucle for fonctionne, je suis perplexe.
Herman Toothrot
mais cela fonctionne pour moi et d'autres aussi pourquoi affiche une option non valide - `` Y ''. Je pense que votre format de fichier n'est pas correct ou que vous manquez quelque chose dans la commande.
pl_rock
4

Option # 1 : décompressez plusieurs fichiers à l'aide d'un guillemet simple (version courte)

gunzip '*.gz'

Notez que le *.gzmot est placé entre deux guillemets simples, de sorte que le shell ne le reconnaîtra pas comme un caractère générique.

Option # 2 : décompressez plusieurs fichiers en utilisant le shell pour la boucle (version longue)

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

La source

ÉDITER :

Je viens d'essayer:

gunzip -dk *.gz

et ça a marché.

-ddécompresser et kconserver les fichiers originaux.

Bilal
la source
avez-vous vérifié gunzip ‘*.gz’ cette commande. je ne suis pas en mesure d'exécuter cette commande. il donnant une erreur.
pl_rock
utiliser gunzip '*.gz'pas gunzip ‘*.gz’ ( ' 'pas `` '')
Bilal
Je suis juste en train de copier-coller votre commande et cela donne de gzip: *.gz: No such file or directorynouveau ne fonctionne pas. as-tu essayé?
pl_rock
Cela ne fonctionne pas gunzip '* .gz' gzip: * .gz: Aucun fichier ou répertoire de ce type
Herman Toothrot
Désolé, je ne l'ai pas essayé! Je suis sur Windows en ce moment :(
Bilal
0

Utilisateurs Linux:

Utilisez la commande suivante pour extraire la quantité minimale de fichiers .gz dans le répertoire en cours et ses sous-répertoires

gunzip *.gz

Utilisez la commande suivante pour extraire n'importe quel nombre de fichiers .gz dans le répertoire en cours et ses sous-répertoires

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