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/
Scott Szretter
la source

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)

Benjamin Bannier
la source
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.)

Jamieson Becker
la source
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é.

Jangelfdez
la source