Comment puis-je gunzip dans un répertoire de destination différent?


80

Comment puis-je gunzip dans un répertoire de destination autre que le répertoire actuel?

Cela n'a pas fonctionné:

gunzip *.gz /putthemhere/

Réponses:


104

Demandez gunzipà la sortie sur la sortie standard et redirigez vers un fichier dans ce répertoire:

gunzip -c file.gz > /THERE/file

zcatest un raccourci pour gunzip -c.

Si vous voulez gunzip, plusieurs fichiers parcourent tous les fichiers:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(ici basenameest utilisé pour obtenir la partie du nom de fichier sans l'extension)


3
Crée le fichier, mais ne conserve pas la propriété du fichier, les autorisations, etc. Cela peut être bon ou mauvais en fonction de votre situation précise.
Chris Johnson

2

Si vous devez extraire un seul fichier et écrire dans un répertoire appartenant à la racine, utilisez sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Si le fichier provient d'une source distante (par exemple, ssh, curl https, etc.), vous pouvez le faire comme ceci:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Notez que ces exemples ne fonctionnent que pour un seul fichier, contrairement à l'exemple * .gz, qui contient tous les fichiers gzippés du répertoire.)


Pour écrire avec les privilèges root, sudo tee $filename >/dev/nullc'est un peu plus idiomatique que d'utiliser dd.
Décembre

1

Vous pouvez essayer avec> pour rediriger le résultat vers l'endroit souhaité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.