web-dev-qa-db-fra.com

Décompresser le fichier gzip dans un répertoire spécifique

Quel est l'équivalent gzip de la commande suivante:

tar xvzf /usr/local/file/file/file.tar.gz -C /usr/local/extract_here

J'essaie

gzip -d /usr/local/file/file/file.tar.gz -C /usr/local/extract_here

mais ça ne marche pas, comment faire avec gzip?

17
gr68

Étant donné que vous avez un fichier .tar.gz, la première façon dont vous avez essayé, avec l'option -C, fonctionnera très bien:

tar xvzf /dir/to/file.tar.gz -C /dir/to/output/

tar appelle gzip pour décompresser, puis extrait les fichiers du flux tar. gzip ne peut que décompresser, donc gunzip file.tar.gz partirait simplement avec le décompressé file.tar, sur lequel vous devrez alors tar xvf file.tar. L'option z de tar est simplement un raccourci pour effectuer la décompression avec gzip et extraire les fichiers.

Si vous souhaitez simplement décompresser un fichier .gz (par opposition à l'extraction d'un fichier .tar.gz) dans un répertoire différent, il vous suffit de le diriger. Par exemple. gzip -dc < file.gz > /somewhere/file.

29
Mark Adler

Afin de conserver le fichier .tar sans compression GZIP, j'utilise une ligne comme celle-ci avec de bons résultats:

cat  file_to_uncompress.tar.gz | gzip -d > /destination_directory/packet_uncompressed.tar

C'est une forme utile et intuitive pour gérer les paquets dans certaines situations.

5
Pablo Luna
cd /mydir_with_gz_files
for i in *gz
do
gzip -dkc < $i > /my_destination_dir/${i%%.gz}
done

Cette syntaxe sert à extraire plusieurs *.gz fichiers contenus dans /mydir_with_gz_files dans un autre répertoire.

1) Utilisé -k option ici car sinon gzip ne conservera PAS l'archive elle-même. Bon à retenir!

2) Je tiens également à souligner ce qui semble évident pour ceux qui donnent la bonne réponse, mais ce n'était pas le cas pour moi et l'auteur de la question: gzip N'extrayera PAS les fichiers dans un RÉPERTOIRE différent, mais s'attendra à ce que le NOM du fichier non compressé résultant soit spécifié comme bien.

Ceci est réalisé ici par le $i > ${i%%.gz} bash substitution de paramètres qui supprime un nom comme "file.gz" de son ".gz "suffixe. Avec d'autres shells, la syntaxe sera différente (si possible).

2
Kostya Berger