The default behavior of gunzip is to delete the .gz file after it decompresses.
How do I prevent it from deleting the file??
If this functionality is not included then is there an alternative program that allows this?
I'm using Ubuntu 9.04
You're looking for:
gzcat x.txt.gz >x.txt
The gzcat command is equivalent to gunzip -c which simply writes the output stream to stdout. This will leave the compressed file untouched. So you can also use:
gunzip -c x.txt.gz >x.txt
Note that on some systems gzcat is also known as zcat so run like this instead:
zcat x.txt.gz >x.txt
You can use the -c option of gunzip which writes the output to stdout, and then pipe it to the file of your choice:
gunzip -c compressed-file.gz > decompressed-file
More details on the manual page.
A simpler solution is to just use gunzip as a filter like this:
gunzip < myfile.gz > myfile
gzip -dk myfile.gz
OR
gunzip -k myfile.gz
Comments:
-k --keep Keep (don't delete) input files during compression or decompression.
If it's actually a tarball (.tgz or .tar.gz extension), then instead of redirecting to file like all of the answers so far, you'll want to pipe it to tar, like so:
gunzip -c myfile.tar.gz | tar xvf -
so that you get the actual contents.
Use the -c option to uncompress the file to stdout. It will not touch the original file.
gunzip -c myfile.gz > myfile
Gnu tar can read gzip files: tar -zxsvf myfile.tar.gz or tar -jxzvf myfile.tar.bz2 for bzipped tar files.