Linux Zip and Unzip Commands

With windows, you have a couple of well-known GUI utilities like WinRAR, 7zip, etc. that allow you to play around with archived files.

What do you do in the case of Linux?

Let me introduce to you, the Linux zip and unzip commands. These are very simple yet powerful commands that allow you to play around with compressed zip files.

Linux Zip Command

Zip is one of the first few commonly used file compression methods for computers. Though the compression offered by the ZIP method is not nearly as good as many other methods available, it does make compression very simple for a common user. It’s also integrated with Windows by default, so you just have to right-click on a file or folder > Click Send to > Compressed (zip) folder.

With Linux, it’s just as simple. If you’re on a GUI distribution like Ubuntu or Linux Mint, you most likely have a compression utility installed. So double-clicking a folder should open up the zip file. 

In this tutorial, we’ll be looking at how we can use the “zip” and “unzip” command-line utilities to compress and decompress files. 

Installing zip and unzip packages

We’re using Ubuntu in this tutorial, so the package manager will be “aptitude” or “apt-get”. You can install the commands using the package manager for your system. Let’s get installing.

root@HowLinux:~# apt-get install zip unzip
Zip And Unzip Installation
Linux zip And unzip Installation

Simple File Zipping using Linux zip command

You can zip a file/folder or multiple files/folders without needing any options. Let’s see how.

In my system, we have created a few files and folders for playing around with the zip command.

Listing Files For Zip
Listing Files For Zip

The format of the command is as below:

zip [name of the zip file] [file(s) or folder(s)]

Here are a few examples of how you can compress one or multiple folders.

root@HowLinux:~# zip CompressedFolder f1
adding: f1/ (stored 0%)
Compressing A Folder
Compressing A Folder

If you want to compress multiple files or folders at the same time, just enter the file or folder names as in the screenshot below.

Compressing Multiple Folders
Compressing Multiple Folders

Exactly like the above example, if you want to compress files, you enter the names of the files instead of the folders (or a combination of both)

Compressing Files Using Zip
Compressing Files Using Zip

Using the -q (quiet) option

If you are compressing a lot of files, the output can be suppressed so you don’t see the list of folders that you’re compressing like in the above examples.

How do we quite the zip command output? By simply adding -q option to it. 

root@HowLinux:~# zip -q CompressedFiles one two three four five
root@HowLinux:~#  

Let’s see an example of how the quiet option works.

Compressing Files Using Zip With Quiet Option
Compressing Files Using Zip With Quiet Option

You see, the output no longer shows up while the command has successfully executed.

Excluding Files or Folders using the -x option

You want to compress all the files in a directory without having to type individual names, but there are some files that you want to exclude from the zipped file. How can we achieve this?

We can do this through the use of the -x option in the zip utility. We will also make use of the asterisk (*) wildcard character to signify that we want to include everything from the current working directory in the archive.

root@HowLinux:~# zip CompressEverything * -x two 
  adding: f1/ (stored 0%)
  adding: f2/ (stored 0%)
  adding: f3/ (stored 0%)
  adding: f4/ (stored 0%)
  adding: f5/ (stored 0%)
  adding: five (stored 0%)
  adding: four (stored 0%)
  adding: one (stored 0%)
  adding: three (stored 0%) 
Zip File Exclusion
Zip File Exclusion

As you can see in the output, we have successfully excluded the file named “two”.

Only update changes or add new files without changing existing files.

We’ve created a zip file named “Compress.zip” which has all the files and folders. Let’s say we update an existing file in the zip file. 

We can make use of the -f option, which stands for “freshen” and updates only changes made to files existing in the zip file, or use the -u option which updates changes to existing files and also adds any new files.

In the example below, we’ve edited the “one” file and added random text to it to demonstrate the -f option.

root@HowLinux:~# zip -f * Compress.zip                                                                                           
freshening: one (stored 0%)  
Zip File Freshening F Option
Zip File Freshening F Option

Another example of “adding” a new file to update the zip. Here we’ve added file “six” to demonstrate the use of the -u option.

root@HowLinux:~# zip -u Compress.zip * 
adding: six (stored 0%) 
Zip Update File Option
Zip Update File Option

Unzip Command in Linux

The zip and the unzip commands make use of the many of the same options with the exact same functionalities. All the above options that we’ve discussed above are also available with the unzip command. Let’s see a few examples.

Unzip without any options

To unzip a file, you do not need to add any options by default just like the zip command. 

root@HowLinux:~# unzip Compress.zip 
Archive:  Compress.zip 
Unzip Without Options
Unzip Without Options

With unzip, the default behavior is to always seek permission before overwriting files. And obviously so, because we don’ want some old files to just rewrite an updated version of it, do we?

-q option in Unzip command

Similar to the -q option with zip command, you can eliminate the output from the unzip command with the -q option. Let’s see how we can do it

root@HowLinux:~# unzip -q Compress.zip
Unzip Quietly
Unzip Quietly

Exclude, Update and Freshen using Unzip

Since the usage and the functionality of these options are exactly as discussed within the zip command, we’ll combine them together. 

If you want to exclude a file from being unzipped from an archive, we use the -x option.

root@HowLinux:~# unzip Compress.zip -x six
Archive:  Compress.zip
Unzip File Exclusion
Unzip File Exclusion

To update any changes that are made to the compressed files compared to the ones in the folder, you can make use of the -f option

But in case you have added a new folder or file to the zip file that does not exist in the folder that you’re extracting, the -u option will automatically extract/update only the required files.

Let’s see an example below of both the commands in action below.

Unzip Freshen And Update
Unzip Freshen And Update

As you can see, the -f option did nothing in the above situation as there were no changes to the existing files, but the -u option extracted the missing file “six” to the folder.

Using -h (help) option and man pages

There are many more options that you may need to use with the zip and unzip commands and can be handy if you know them. Make sure you have a look at them by simply typing:

root@HowLinux:~# unzip -h
OR
root@HowLinux:~# zip -h 

We also recently wrote a post on how man pages in Linux can be very helpful when you need to understand a command correctly. These pages will offer comprehensive information on the command that you’re looking for. To access the man pages for the zip and the unzip command, open your terminal and type this:

root@HowLinux:~# man zip
OR 
root@HowLinux:~# man unzip

Conclusion

The zip utility is a very efficient and simple utility for compressing files that need to be transferred across the network or even across different operating systems. Even though the compression offered by the zip algorithm is not great, it serves the purpose. 

Since the zip compression algorithm is simple, so are the packages used for compressing the uncompressing zip files. Just practice a few times, and you will become very efficient with the functionality of the commands.