In this tutorial, we touch base on the zip and unzip commands and how they are used in Linux. Zip is a command used for creating an archive file or a zipped file. This allows you to compress your files and create more space for other files on your hard drive or removable drive. Additionally, zipping your files/directories makes them more portable and easier to upload, download or even attach and send them via email.The opposite of zipping is unzipping, and here we use the unzip command to decompress the files and access them individually.
Before start discussing zip and unzip command, let’s see how these commands can be installed from command line,
Install zip & unzip command on Ubuntu / Debian / Linux Mint
Open the terminal and run the following apt command,
$ sudo apt install -y zip unzip or $ sudo apt-get install -y zip unzip
Install zip & unzip command on CentOS / RHEL / Fedora
Open the terminal and execute the beneath command,
$ sudo yum install -y zip unzip or $ sudo dnf install -y zip unzip
Let’s dive in and see how to zip and unzip files and directories in Linux with zip and unzip command with examples.
Zip command in Linux
Zipping a file is as easy as ABC. The syntax is quite straightforward:
$ zip OPTIONS archive.zip file
A few points to take into consideration before you proceed:
- You need to have write permissions on the file you are zipping and the directory location before zipping a file.
- When you unzip or extract a file, the user owns the file/directory.
Example 1) Zipping a single file and multiple files with zip command
Let’s assume you have a text file – reports1.txt – in your current directory and you want to zip it into an archive called reports.zip.
The command for this operation will be:
$ zip reports.zip reports1.txt
Additionally, you can zip multiple files at a go into an archive as shown:
$ zip archive.zip file1 file2 file3
Again, let’s assume that we have 3 text files reports1.txt, reports2.txt and reports3.txt. To zip them into the archive reports.zip, run the command:
$ zip reports.zip reports1.txt reports2.txt reports3.txt
Example 2) Adding a file to a zip archive (-u)
At times, you may find the need to add a file to a zip archive. To do so, use the -u flag. For example, to add another file reports4.txt, run:
$ zip -u reports.zip report4.txt
Example 3) View contents of a zipped file
To view contents of a zipped file, use the command as shown:
$ zipinfo archive.zip
Example 4) Zipping all the files in the current directory (* )
If you have multiple files in your current directory, you can zip all of them at a go using the wildcard symbol as shown in the syntax below:
$ zip archive.zip *
For example, to compress all files in the home directory to home.zip archive, execute the command below. Be sure that you are working in the home directory.
$ zip home.zip *
Example 5) Delete a file from an archive (-d)
To remove a file from an archive, invoke the -d flag. For instance, to remove reports4.txt from the zipped file, run:
$ zip -d reports.zip reports4.txt
Example 6) Delete files after zipping (-m)
As you may have noted, the original files remain even after zipping or archiving them.
If you prefer you get rid of them during archival and conserve space, invoke the -m option during archival as shown:
$ zip -m reports.zip reports1.txt reports2.txt reports3.txt
Example 7) How to zip a directory (-r)
We have so far seen how to zip files. Often, you will be tasked with zipping directories since they take up more space for the most time.
To zip a folder, use the syntax below. The -r option zipped the folder recursively.
$ zip -r archive.zip folder
For example, to zip a directory data to an archive data.zip, execute:
$ zip -r data.zip data
As with files, you can also zip several folders concurrently as shown:
$ zip -r archive.zip folder1 folder2 folder3
Example 8) Zip a file to a different destination
To zip a file to a different destination other than the current directory simply specify the path to the zipped archive in your syntax as shown:
$ zip /path/to/destination/archive.zip file
For example, the file hello.txt is archived to file.zip file in the Documents/data/sales path.
Example 9) Zip both files and directories into their own archives
If, for whatever reason, you want to compress files and directories in the current directory into their individual zip archives, use the for loop as shown:
$ for i in *; do zip -r "${i%}.zip" "$i"; done
For example, the example below compresses the file hello.txt and folder sales into their own archives hello.zip and sales.zip respectively.
Unzip command in Linux
Let’s now shift gears and focus on unzip command. The command is used to unzip or decompress zipped files and directories. Let’s take a look at a few example usages of the command:
Example 1) How to view the contents of a zipped file (-l)
Before you are unzipping a file or directory, you can view the archive’s contents using the -l option as shown:
$ unzip -l archive.zip
For example:
$ unzip -l data.zip
Example 2) How to view detailed contents of a zipped file (-Z)
To view more detailed information about the file such as file permissions and the total size of the files in the archive, use the -Z option as shown:
$ unzip -Z data.zip
Example 3) How to unzip/decompress a zipped file (-d)
In its basic and simplest syntax, unzipping a zipped file takes the syntax below and occurs in the current working directory.
$ unzip archive.zip
For example:
$ unzip data.zip
Example 4) Unzip a file to another directory
To extract or unzip an archive to a different destination, use the -d flag and specify the destination path as shown
$ unzip archive.zip -d /path/to/destination/folder
For example.
$ unzip data.zip -d /home/linuxtechi/Documents
Example 5) Unzip one or more files from an archive
Oftentimes, you will have a compressed file with multiple files. Instead of uncompressing the archive entirely, you may opt to just extract one or two files. To achieve this, specify the file(s) as shown in the syntax:
$ unzip archive.zip file1 file2
For example, to extract a file called hello.txt from the archive home.zip run
$ unzip home.zip hello.txt
Additionally, you can extract the file to a different destination folder instead of the current directory. For example, the command below extracts the hello.txt file to the Documents/data/sales directory.
$ unzip home.zip hello.txt -d Documents/data/sales
Example 6) Exclude certain files from being decompressed (- x)
Just as you can extract a specific file(s) from an archive, so can you exclude certain files from being decompressed. This is possible using the ( -x) option in the syntax shown
$ unzip archive.zip -x file1
For example, the example below excludes files file1.txt & file2.txt from being extracted.
$ unzip archive.zip -x file1.txt file2.txt
Example 7) How to suppress the output of unzip command (-q)
As you may have noted, details of the unzip operation showing the location of the extraction and files being extracted is printed on the terminal. To suppress this info, use the -q switch as shown:
$ unzip -q data.zip
Example 8) How to overwrite existing files (-o)
When you run the unzip command twice in the same directory, you will be prompted whether to replace, ignore the extraction or rename the existing files as shown in the output below.
If you want to overwrite the existing file, without being prompted, use the -o option as shown:
$ unzip -o data.zip
Example 9) Unzip multiple files
Finally, to unzip multiple files at a go, use a wildcard in the syntax shown:
$ unzip '*.txt'
Take note of the single quote enclosing the *.txt parameter.
Conclusion
This brings us to the end of this guide; we have showcased the usage of the zip and unzip commands and that various options you can use. For more information about their usage, feel free to visit their man pages. We hope you have a firm grip of the usage of both commands and that you can comfortably zip and unzip your files.
Also Read : How to Create Hard and Soft (symlink) Links on Linux Systems
Thank you, I’m a novice in Linux, it was really helpful!