02. Compressing Files gzip, gunzip, zcat, zless


The most popular Unix File compression command is gzip. gzip repalces the original file with a compressed version, which has a .gz file extension.

$ ls -l
-rw-r--r--  1 JohnDoe       staff   285 May  9 13:27 README.md
-rw-r--r--  1 JohnDoe       staff  6459 May  9 13:27 index.html
-rw-r--r--  1 JohnDoe       staff  5341 May  9 13:27 todo.txt
$ gzip README.md todo.txt index.html
$ ls -l
-rw-r--r--  1 JohnDoe  staff    56 May  9 13:27 README.md.gz
-rw-r--r--  1 JohnDoe  staff  2626 May  9 13:27 index.html.gz
-rw-r--r--  1 JohnDoe  staff  2113 May  9 13:27 todo.txt.gz

As you can see, the files have been individually compressed. Note, however, that you can't gzip a folder.


To reverse a file back to its uncompressed form, use gunzip. The uncompressed file will have the same permissionas and timestamp as when it was gzipped.

$ gunzip README.md index.html todo.txt
-rw-r--r--  1 JohnDoe  staff   285 May  9 13:27 README.md
-rw-r--r--  1 JohnDoe  staff  6459 May  9 13:27 index.html
-rw-r--r--  1 JohnDoe  staff  5341 May  9 13:27 todo.txt

Note how we don't need to specify the .gz in the filename, as that is already assumed.


There are several options you can use with gzip. Here are a list of the most common ones - be sure to check the man page for more.

Write output to standard output and keep original files.
Decompress - same as using gunzip.
Force overwriting and compress links.
Display usage information. may also be specified with --help
Retail original files.
List the compression ratio for each file compressed.
Recursively compress files in the directory.
Test the integrity of a compressed file.
Set amount of compression. number is an integer in the range of 1 to 9. 1 is fastest, but has the least compression. 9 is slowest with the most compression. The default is 6.

Keeping original files

Suppose you want to keep the original files, and make an extra copy for the gzipped ones. Simply pass in the -k option.

$ gzip -k README.md
$ ls 
README.md   README.md.gz  

Viewing compression ratio

We can view the compression ratio with the -l option.

$ gzip index.html.gz
$ gzip -l index.html.gz
  compressed uncompressed  ratio uncompressed_name
        2626         6459  59.3% index.html
$ gzip -l README.md.gz
compressed uncompressed  ratio uncompressed_name
        56          285  80.3% README.md

Seeing our ratio, we can tell that our README.md file must have a lot of repeated elements!

zcat and zless

zcat is the same as using gunzip -c. It will unzip your file and print to standard out.

$ zcat README.md.gz | less
# unzipped and now you can read with less
$ zless 
# same function as above

Compressing already compressed files

Make sure you don't compress an already compressed format. File types such as .mp3 and .jpeg have already been compressed, so a further compression may cause the file to become larger.

As you can tell, gzip was not meant to compress a group of multiple files - we use the tar command for that, which we'll see in the next lesson.

Take your Linux skills to the next level!

Command Line Kung Fu

Take your Linux skills to the next level! Try Linux & UNIX

Command Line Kung Fu is packed with dozens of tips and practical real-world examples. You won't find theoretical examples in this book. The examples demonstrate how to solve actual problems. The tactics are easy to find, too. Each chapter covers a specific topic and groups related tips and examples together.

$ Check price
14.9914.99Amazon 4.5 logo(27+ reviews)

More Linux & UNIX resources

Aching back from coding all day?

Prism Glasses

Aching back from coding all day? Try Back Problems

Ever feel achy from sitting crunched up on your computer table? Try lying down with these optical glasses that allow you to work on your laptop while lying flat on your back. This is the perfect solution with those with limited mobility or those who wish to prevent neck cramps and back strains.

$ Check price
4.454.45Amazon 4 logo(128+ reviews)

More Back Problems resources