How do I gunzip to a destination directory other than the current one?

This did not work:

gunzip *.gz /putthemhere/

Ask gunzip to output to standard output and redirect to a file in that directory:

gunzip -c file.gz > /THERE/file

zcat is a shortcut for gunzip -c.

If you want to gunzip multiple files iterate over all files:

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

(here basename is used to get the part of the filename without the extension)

  • 4
    Creates the file, but does not preserve file ownership, permissions etc. That may be good or bad depending on your precise situation. – Chris Johnson Nov 9 '14 at 17:12
  • how to gunzip to different location alongwith deleting the original file? – kaushal agrawal Jan 7 '20 at 13:25

If you need to extract a single file and write into a root-owned directory, then use sudo dd:

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

If the file is coming from a remote source (i.e., ssh, curl https, etc), you can do it like this:

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

(Note that these examples only work for a single file, unlike the example *.gz, which is all gzipped files in the directory.)

  • For writing with root privileges, sudo tee $filename >/dev/null is a little more idiomatic than using dd. – dcoles Nov 17 '18 at 21:17

You can try with > to redirect the result to the place you want.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.