123

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

This did not work:

gunzip *.gz /putthemhere/

3 Answers 3

151

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}"
done

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

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

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

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.)

2
  • For writing with root privileges, sudo tee $filename >/dev/null is a little more idiomatic than using dd.
    – dcoles
    Nov 17, 2018 at 21:17
  • 1
    @Toto @AulisRonkainen You should've approved this suggested edit. The answerer, in their 2018-11-21 edit, meant to edit their answer to say sudo tee instead of sudo dd. The answerer replaced two instances, but it seems they just forgot to edit that part in the aforementioned suggested edit. Jun 26, 2022 at 4:28
1

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

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .