zip command in Linux is probably the simplest and most intuitive way to work with ZIP files on the command line. And not just that, the ZIP file format is universal – almost every OS out there has a native program that can work with it. Here’s all the ways you can use this command in any Linux command line.
How to Install Zip in Linux
The latest version of the Linux
zip command should be available in all major package managers.
sudo apt install zip
For Arch Linux:
sudo pacman -S zip
sudo dnf install zip
sudo emerge --ask zip
Note: Before installing anything, make sure to update your package manager first to get the
zip command’s latest version. You can learn how to do that and more with our Linux package manager cheatsheet.
zip installed, the
unzip command will also be available now.
Zip Command in Linux: Syntax and Options
There’s a basic syntax to the
zip command, and it takes just two parameters: the output ZIP file’s filename and the input’s filename.
zip [options] <zip-file.zip> <files-to-archive>
Their positions are important here. If you do them the other way around, the computer will wonder why you’re trying to make a “file-to-archive.jpg” with it from a “zip-file.zip” that doesn’t exist and return an error.
As for setting the options, you’ll need to work with flags. There are 8 flags you would regularly need for normal use:
-ddelete selected archived entries in the ZIP file.
-qquietly do task without printing anything on the terminal.
-Ttest the ZIP file’s integrity.
-uupdate ZIP file by adding new files into the archive.
-mmove file into archive.
-rrecursively add files within a folder into a ZIP file.
-xexclude files with the selected filenames.
-iinclude only files with the selected names.
You can place the flags anywhere you like whether they’re before the output, after the input, between the two – you can even use multiple flags scattered all around the line in any order. Just make sure that you type them after typing
The exception are
-i which need a new input after using them.
How to Zip a File in Linux Using the Zip Command
The easiest way to archive files with the
zip command is to type
zip followed by the filename of the ZIP file and then the file you are trying to archive or compress. Flags are optional, so you can do it like that to quickly zip any file on Linux.
zip archive.zip text_file.txt
You can also add more files by adding the others after the first file you were trying to archive. And if any of these have spaces in their names, you can enclose them in quotation marks.
zip archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"
Using the -d Flag
-d flag lets you delete a file archived within the ZIP file in the same way you would have added it into one.
zip -d archive.zip remove_me.jpg
You can also use it to remove entire folders within the archive. However, this won’t work for files outside of the ZIP file (so you can’t use it to delete files after archiving).
Using the -q Flag
-q flag is for making sure that
zip won’t return a message when it does its thing.
zip -q archive.zip text_file.txt
It’s useful when you’re using the
zip command with a script. But if you’re using this by yourself, you might want to avoid using the
-q flag since you won’t know if the the archiving process was successful without checking with the
Using the -T Flag
Some files Some ZIP files can get corrupted during download – it happens. You can use the
-T flag to check the integrity so you would know if it really is a broken file or you’re just inputting the wrong password.
zip -T archive.zip
This is pretty important when downloading large files like OS images. For files like these, you can successfully burn them into a live USB and end up with errors once you run the image file on your machine. The same goes with videos and music that get cut-up parts in random places.
Using the -u Flag
If you wanted to add a new file into an existing ZIP file, you can use the
zip -u archive.zip new_file.txt
You can also add more files by adding them after the first file, as if you were using the
zip command normally to make a new ZIP archive.
Using the -e Flag
If you want to add a password, you need to use the
-e flag. This option only applies the password and encryption into the file you add into the ZIP file within its command, so previous files will remain unencrypted if you use this with the
zip -e archive.zip text_file.txt
The great thing about ZIP files is that the password-making process also adds an extra layer of protection besides giving access. Your password works like a digital signature which is used to decrypt an extra encryption layer added into the ZIP file.
Using the -m Flag
-m flag deletes the original file after it gets archived into the ZIP file. Think of this as automating an extra step so you won’t have to remove it by yourself.
zip -m archive.zip text_file.txt
One important bit to remember though: the
-m flag deletes files in such a way that makes it impossible to recover them without using a file restoration tool. So be sure to keep a backup, or just remove things manually using the rm command instead.
How to Zip a Folder in Linux Using the Zip Command
If you use the
zip command on a raw folder, you’ll be left with a folder that does not contain any files at all. Whenever you are trying to zip a folder, you need to use the
Using the -r Flag
-r flag, aka recursive, goes through each content of a folder and its subfolders and archives every single one into the ZIP file. It will also retain the current structure of each subfolder.
zip -r archive.zip my_folder
This also works if you want to archive everything within the current folder. Just replace
./ and it will change its target to everything within the current one.
zip -r archive.zip ./
Furthermore, you can use this alongside the
-u flag to include folders and their contents into an existing ZIP file.
zip -r -u archive.zip another_folder
Using the -i Flag
-i flag lets you pick out a specific file that you want to include and excludes everything else within a folder
zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt
* asterisks with the
-i flag, you can select files that share similar names but could end with something like a number. For example, typing
*.txt will make the
zip command include all TXT files within the folder.
zip -r archive.zip my_folder -i "*.txt"
Using the -x Flag
-x flag lets you exclude only certain files while zipping a whole folder.
zip -r archive.zip my_folder -x my_folder/dont_zip.jpg
-x flag overrides the
-i flag when used together. This way, you can, for example, tell
zip to include all the other files of the same type except for the file you don’t want it to zip.
zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt
How to Unzip a File Using the Linux Zip Command
The unzip program is a partner program to the default zip program. It extracts files from your ZIP archive.
To use this program, you just need to type
unzip and the filename of the ZIP archive.
By using the
unzip command, you will unzip the ZIP file within the current working directory regardless of where the ZIP file came from.
To extract or unzip a Linux file within a ZIP file so the others remain unextracted, you can add its filename after the part where you type the archive.
unzip archive.zip file.txt
How to Unzip a Linux Folder With Zip
While unzip will normally extract folders located within a ZIP archive, it can be pretty hard to make it extract only certain folders. But that does not mean it’s impossible.
unzip archive.zip my_folder/a_subfolder/*
That line of code extracts everything within
Also, when you unzip a folder, the unzip program creates a new folder within the current working directory and unpacks its folders there. If a folder exists with the same name (or a previous version of the folder is present), it ask if it’s okay to replace the file that’s currently in the folder.
Frequently Asked Questions
What does the gzip command in Linux do?
gzip command is a tool that you can use to store and compress files into a GZ file.
Is ZIP better than TAR?
In a way, ZIP is better than TAR because ZIP files can compress, encrypt, and protect their contents. However, TAR files are meant to combine files into one file for faster file transfer while ZIP files (despite being used for the same purpose) come with those extra features in mind.
Is TAR faster than ZIP?
TAR files do not compress nor encrypt their contents. So if you are looking for a faster way to combine a large amount of files into a single easy-to-transfer archive, you’ll see some gains with TAR compared to ZIP. However, you might find it easier to transfer a ZIP file instead of a TAR file because ZIP files tend to be much smaller than TAR files.
Image credit: Unsplash, Screenshots by Terenz Jomar Dela Cruz
Our latest tutorials delivered straight to your inbox