If you have a zip compressed file, you can unzip it in the Linux command line. The unzip command in Linux is quite versatile and you can use it do a lot more than just extracting zip file.
I have discussed how to gzip a folder in Linux in the past. It’s time to see various usage of the unzip command. Before you do that, make sure that unzip has been installed on your system. You can use your distribution’s package manager to install the command.
On Ubuntu and Debian, you can use this command:
sudo apt install unzip
Once you have verified that, let’s see how to use unzip in Linux terminal.
Unzip command in Linux
The unzip command has a really simple syntax:
unzip [option] zip_file
If you use it to extract a zip file without any option, it will extract all the files in the current directory:
unzip webdesign.zip Archive: webdesign.zip inflating: 339252-PAJF05-394.ai inflating: 339252-PAJF07-322.eps inflating: 339252-PALBTI-224.ai inflating: 339252-PALBTL-394.eps inflating: 339252-PALBTM-53.jpg inflating: License free.txt inflating: License premium.txt
And that’s not what you would want most of the time. It’ll just flood your current directory with all the extracted files.
ls 339252-PAJF05-394.ai 339252-PALBTI-224.ai 339252-PALBTM-53.jpg 'License premium.txt' 339252-PAJF07-322.eps 339252-PALBTL-394.eps 'License free.txt' webdesign.zip
1. Unzip to a directory
The expected behavior is that you should have the files extracted to a certain directory, normally with the same name as the zip file.
You can specify the target directory where you want to extract the files.
unzip -d target_directory zip_file
If the target directory doesn’t exist, it will be created. You cannot create nested directories in this manner though.
Do note that you can also put the target directory at the end but not all options can be added at the end.
unzip zip_file -d target_directory
2. See the content of the zip file without extracting
If you want to see what the zip file contains, you son’t always have to extract it first. You can use the
-l option and it will show the content of the zip file.
unzip -l zip_file
As you can see, it also shows the timestamp of the files and the actual size of the individual files in bytes.
abhishek@linuxhandbook:$ unzip -l webdesign.zip Archive: webdesign.zip Length Date Time Name --------- ---------- ----- ---- 205358 2018-06-18 23:14 339252-PAJF05-394.ai 996906 2018-06-18 23:14 339252-PAJF07-322.eps 213968 2018-06-20 00:00 339252-PALBTI-224.ai 1005362 2018-06-20 00:00 339252-PALBTL-394.eps 305531 2018-06-20 00:00 339252-PALBTM-53.jpg 1462 2018-06-20 09:45 License free.txt 1116 2018-06-20 09:45 License premium.txt --------- ------- 2729703 7 files
If you want, you can get more information like the compressed size, compression ratio by using the verbose mode with
-v option. The CRC-32 in the output is the cyclic redundancy check.
abhishek@linuxhandbook:$ unzip -v webdesign.zip Archive: webdesign.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 205358 Defl:N 142097 31% 2018-06-18 23:14 792f2380 339252-PAJF05-394.ai 996906 Defl:N 221228 78% 2018-06-18 23:14 440390d3 339252-PAJF07-322.eps 213968 Defl:N 147568 31% 2018-06-20 00:00 cdb64dfc 339252-PALBTI-224.ai 1005362 Defl:N 226727 77% 2018-06-20 00:00 aed3d97a 339252-PALBTL-394.eps 305531 Defl:N 183363 40% 2018-06-20 00:00 e4ced90f 339252-PALBTM-53.jpg 1462 Defl:N 728 50% 2018-06-20 09:45 0eb9e17b License free.txt 1116 Defl:N 558 50% 2018-06-20 09:45 165dd84e License premium.txt -------- ------- --- ------- 2729703 922269 66% 7 files
3. Overwrite all the files without prompting
If there are already files with the same name in the directory where you are extracting the files, you’ll be promoted for each such files. You can force overwrite all the files with option
unzip -o -d target_directory zip_file
4. Do not overwrite any files -n
If you don’t want any existing file to be overwritten by newly extracted files, use the -n option (stands for never overwrite).
unzip -n -d target_directory zip_file
5. Update files and create if necessary
This is slightly different the overwriting all the files. In this case, only those files will will be overwritten that have newer timestamp than the existing files. If a file doesn’t exist, it will be created.
You can achieve that with option -u:
unzip -u -d target_directory zip_file
6. Freshen existing files but create none
Slight change from the previous example here. In this one, it will update the existing files if they have older timestamp but it won’t create any new files even if they don’ exist.
The option -f allows you to do that:
unzip -f -d target_directory zip_file
7. Extract in quiet mode
When you unzip a file, it shows all the files that have been extracted on the display. Now imagine a zip file that has hundreds of files in it. If you extract it, your screen will be cluttered with the output.
You can use the quiet mode with option
-q and you won’t see anything on the display:
unzip -q -d target_directory zip_file
8. Exclude files from extraction
You can also exclude certain files or certain type of files from being extracted.
unzip zip_file -x file_to_exclude
In my example, let’s say I don’t want to extract any .eps files.
abhishek@linuxhandbook:$ unzip webdesign.zip -x *.eps Archive: webdesign.zip inflating: 339252-PAJF05-394.ai inflating: 339252-PALBTI-224.ai inflating: 339252-PALBTM-53.jpg inflating: License free.txt inflating: License premium.txt
Those were some of the most common examples of the unzip command in Linux. You can always check its man page to learn about more options.
Do you use some other option with unzip frequently? Why not share it with us in the comments?