- ZIP command in Linux with examples
- Options in ‘Zip’ command in Linux
- Examples of ‘Zip’ command in Linux
- 1) `unzip` command in ‘Zip’
- 2) `-d` Option in Zip command
- 3) `-u` option in Zip command
- 4) `-m` option in Zip command
- 5) `-r` option in Zip command
- 6) `-x` option in Zip command
- 7) `-v` options in Zip command
- Most Frequently asked Question about `zip` command in Linux
- 1) How do I create a zip file in Linux?
- 2) How do I extract a zip file in linux?
- 3) How do i exclude specific files from a zip archive?
- 4) How do I include hidden files in a zip archive?
- 5) How do I password-protect a zip archive?
- Conclusion
- Zip command for excluding directories and files
- 3 Answers 3
- How to exclude files from a zip archive in Linux
- How to exclude files and directories when using “zip” in Linux:
- Conclusion:
- About the author
- Sam U
ZIP command in Linux with examples
ZIP is a compression and file packaging utility for Unix. Each file is stored in a single .zip file with the extension .zip.
- Zip is used to compress files to reduce file size and is also used as a file package utility. Zip is available in many operating systems like Unix, Linux, windows, etc.
- If you have limited bandwidth between two servers and want to transfer the files faster, then zip the files and transfer them.
- The zip program puts one or more compressed files into a single zip archive, along with information about the files (name, path, date, time of last modification, protection, and check information to verify file integrity). An entire directory structure can be packed into a zip archive with a single command.
- Compression ratios of 2:1 to 3:1 is common for text files. zip has one compression method (deflation) and can also store files without compression. zip automatically chooses the better of the two for each file to be compressed. The program is useful for packaging a set of files for distribution, archiving files, and for saving disk space by temporarily compressing unused files or directories.
zip [options] [file_name.zip] [files_names]
The syntax for Creating a zip file:
zip [file_name.zip] [file_name]
Options in ‘Zip’ command in Linux
(Remove files from the archive):
This option allows you to remove specific files from a zip archive. After creating a zip file, you can selectively remove files using the -d option.
zip -d [file_name.zip] [files_name]
(Update files in the archive):
The -u option enables you to update files in an existing zip archive. You can specify a list of files to update or add new files to the archive. The update occurs only if the modified version is more recent than the one already in the zip archive.
zip -u [file_name.zip] [files_name]
(Move files into the archive):
With the -m option, you can move specified files into the zip archive. This operation also deletes the target directories or files after creating the zip archive. If a directory becomes empty after removing the files, it is also deleted. Use this option with caution, as it permanently removes the input files.
zip -m [file_name.zip] [files_name]
(Recursively zip a directory):
The -r option allows you to recursively zip a directory and its files. It includes all the files present in the specified directory and its subdirectories in the resulting zip archive.
zip -r [file_name.zip] [directory_name]
(Exclude files from the zip):
Using the -x option, you can exclude specific files from being included in the zip archive. This is useful when you want to zip all files in a directory but want to exclude certain unwanted files.
zip -r [file_name.zip] -x [directory_name]
(Verbose mode):
The -v option enables the verbose mode, providing diagnostic information during compression. It displays a progress indicator and offers verbose diagnostic information about the zip file structure. When used alone, it prints a diagnostic screen along with details about the zip executable and the target environment.
zip -v [file_name.zip] [file_name]
Examples of ‘Zip’ command in Linux
1) `unzip` command in ‘Zip’
unzip will list, test, or extract files from a ZIP archive, commonly found on Unix systems. The default behavior (with no options) is to extract into the current directory (and sub-directories below it) all files from the specified ZIP archive.
Suppose we have a zip file “name = jayesh_gfg.zip” and we have three text files inside it “name = a.txt, b.txt and c.txt”. we have to unzip it in the current directory.
Syntax and Output:
Here, we used `ls` command to display all the files that has be unzipped from the zipped file.
2) `-d` Option in Zip command
zip -d [file_name.zip] [files_name]
Suppose we have zip file “name = myfile.zip” and have eight files in it “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c “.
We have to delete hello7.c, then…
Syntax and Output:
- First, we have deleted `hello7.c` successfully.
- Then we used “sudo unzip myfile.zip” to unzip the file for confirming that our file is deleted.
- Then we used “ls” to see the file that had been unzipped.
delete a file from zip file
3) `-u` option in Zip command
zip -u [file_name.zip] [files_name]
Suppose we have zip file “name= myfile.zip” and we have to add a new file “name = hello9.c” in it.
Syntax and Output:
we have used `vi` to see that our file is added successfully.
4) `-m` option in Zip command
zip -m [file_name.zip] [files_name]
Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello8.c, hello9.c ” Present in current directory to zip file.
Syntax and Output:
we have used `ls` to see that our files are moved successfully.
To check files inside “myfile.zip” we can type “vi myfile.zip”.
moved files inside zip file
5) `-r` option in Zip command
zip -r [file_name.zip] [directory_name]
Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c ” present in directory “name= jkj_gfg” to zip file recursively.
Syntax and Output:
To check files inside “myfile.zip” we can type “vi myfile.zip”.
copy file recursively form a directory to a zip file
6) `-x` option in Zip command
zip -r [file_name.zip] -x [directory_name]
Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c ” present in directory “name= jkj_gfg” to zip file recursively.
Syntax and Output:
Here, the -r option is used to recursively add all files and directories in the current directory to the archive, and the. specifies the current directory as the source directory. The -x a.txt option excludes the file “a.txt” from the archive.
To check files inside “myfile.zip” we can type “vi myfile.zip”.
file copied recursively except one file we mentioned.
7) `-v` options in Zip command
zip -v [file_name.zip] [file_name]
If we want to know about all the files with extension “.c”
Syntax and Output:
checking information about all files inside zip
Most Frequently asked Question about `zip` command in Linux
1) How do I create a zip file in Linux?
By using `zip` command itself.
Example:
We are creating a zip file named = `gfg.zip` containing the files `first.txt` and `second.txt`:
zip gfg.zip first.txt second.txt
2) How do I extract a zip file in linux?
By using `unzip` command.
Example:
we are extracting file name = `gfg.zip`:
3) How do i exclude specific files from a zip archive?
By using `-x` option in zip command.
Example:
To exclude specific files from a zip archive, we can use the -x option followed by the name of the file you want to exclude. For example, the following command creates a zip file named `gfg.zip` containing all files in the current directory except for `third.txt`:
4) How do I include hidden files in a zip archive?
By just using `-r` option, which is copying every file recursively. For example, our zip file name is ‘gfg.zip` and we want to archive hidden files of the current directory.
5) How do I password-protect a zip archive?
By using option `-P` followed by the password we want to use. For example, our zip file name = `gfg.zip` which contain file name = `first.txt` and `second.txt`. And we also used `-e` to encrypt our zip archive, so whenever a user extracts the archive file, a prompt will come to enter the password.
zip -e -P [my_password] gfg.zip first.txt second.txt
Conclusion
Zip command in Linux is used to compress files and packaging them into a single .zip archive, which overall helps us in saving disk space and making it easy to handle big data. We have discussed various options used in zip command like -d, -u, -m, -r, -x, and -v. Overall, it is a recommended tool for Linux users to efficiently manage their files.
Zip command for excluding directories and files
i’m trying to use this ssh command in centos 5 to zip up a directory full up folders and files yet exclude the examples below. it’s not working.
zip -r file.zip * -x dir1 -x dir2 -x file1 -x file2
zip -r file.zip * -x "dir1" -x "dir2" -x "file1" -x "file2"
It still just zips up the whole directory and everything it in. I don’t want dir1 dir2 file1 file2. I need to know the right -x syntax for the exclude functions to work.
Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See What topics can I ask about here in the Help Center. Perhaps Super User or Unix & Linux Stack Exchange would be a better place to ask.
3 Answers 3
For my particular system in order to exclude a directory I had to put quotes around my excluded directories and it worked like a charm:
zip -r myarchive.zip target -x "target/exclude1/*" "target/exclude2/*"
— this excluded both the directory to exclude and all files inside it.
— You must use the full path to the directories you want to include and exclude!
— As long as the excludes are at the end of the line you do not need the @ symbol
The -x option is a bit strange; you list the files, starting with -x , and ending with an @ sign:
zip file.zip -r * -x dir1 dir2 file1 file2 @
I also seriously doubt you want \ in your filenames on a Unix system … make sure your paths are OK. / is the usual path separator.
mkdir tmp5 cd tmp5 touch a b c d e f g zip foo.zip -r * -x e f g @ adding: a (stored 0%) adding: b (stored 0%) adding: c (stored 0%) adding: d (stored 0%)
With subdirectories, you can easily omit their contents using a wildcard, but it seems that the * causes the directory itself to be included (empty):
mkdir x y z touch / zip foo.zip -r * -x c y y/* z z/* @ adding: a (stored 0%) adding: b (stored 0%) adding: x/ (stored 0%) adding: x/b (stored 0%) adding: x/a (stored 0%) adding: x/c (stored 0%) adding: y/ (stored 0%) adding: z/ (stored 0%)
You might to better to omit the * and explicitly list those things you do want included…
zip core-latest-$version.zip -r cp images include mobile stats \ -x cp/includes/configure.php @
(the \ at the end just continues to the next line; you can put it all on one line without the trailing \ )
How to exclude files from a zip archive in Linux
Collecting multiple files into a single file is called archiving, and “zip” is one of the widely used archive formats that come with lossless data compression support. Archiving files is an efficient way to save your machine’s storage and make it easier to transfer files through email or FTP.
Linux has a built-in zip utility to archive the files with a set of options. This utility provides several methods to archive the files. When you archive a directory using zip utility, it includes all the files in that directory and zip it. So, is it possible to archive a file and excluding the particular files using the “zip” utility? The answer is yes! The “zip” is a versatile Linux utility that lets you archive files, excluding specified files or folders. How does it happen? Let’s begin:
How to exclude files and directories when using “zip” in Linux:
You can archive any directory excluding a particular file using the “-x” flag with the “zip” utility. The general syntax is mentioned below:
Let’s understand it through an example; I have created a directory by the name of “images” that contains 3 image files, one zipped file, and one sub-directory (my folder) as shown in the following image :
Now launch terminal and type:
In the above command, I am compressing the “images” directory and excluding an image file “img2.jpg” and saving it as “myfile.zip.”
As it can be seen that “myfile.zip” did not include the “img2.jpg” file. You can also exclude file by mentioning the extension of the file; for instance, I want to exclude all “.jpg” files in the “images” directory and archive it:
All the “jpg” files have been excluded in the zip file. You can exclude multiple files and directories by mentioning them in the following way:
$zip -r myfile.zip images -x / images / img2.jpg -x
The “img2.jpg” and “all_images.zip” files will not be archived:
Conclusion:
Keeping the files in an archive saves a lot of your machine’s storage and helps manage tons of files and folders. In Linux “zip” utility is used to archive files/directories. In this write-up, we learned how to use the “zip” utility to archive the directory, excluding a specific file or folder. The “zip” utility comes with quite useful options for executing “zip –help” in the terminal.
About the author
Sam U
I am a professional graphics designer with over 6 years of experience. Currently doing research in virtual reality, augmented reality and mixed reality.
I hardly watch movies but love to read tech related books and articles.