- How do I unzip multiple / many files under Linux?
- The problem with multiple zip files on Linux
- #1: Unzip Multiple Files Using Single Quote (short version)
- #2: Unzip Multiple Files from Linux Command Line Using Shell For Loop (Long Version)
- Unzip files in particular directory or folder under Linux or UNIX
- Linux zip folder | 16 practical Linux zip command examples
- Linux Zip Command Examples
- Pre-requisite:
- Install zip
- Install unzip
- 1. How to zip a folder with multiple files Linux
- 2. How to create a zip file by excluding some files
- 3. How to zip a folder by compressing directory and sub-directories
- 4. How to display zip archive content
- 5. How to zip a folder with password protection
- 6. How to update or modify existing file in zip archive
- 7. How to add files to existing zip archive
- 8. How to list zip archive contents without extracting
- 9. How to create a zip file without complete path (Store only the file name)
- 10. How to create a zip file and delete original files after archiving
- 11. How to zip a folder with higher compression level
- 12. How to copy files between two zip archives
- 13. Linux zip directory and remove files from zip archive
- 14. Linux zip folder and preserve symbolic links
- Unzip to directory using unzip command
- 15. How to create a zip file and compress with bzip2
- Extract content using unzip command
- 16. How to zip a folder and later split zip archive
- References:
- Related Posts
How do I unzip multiple / many files under Linux?
The problem with multiple zip files on Linux
Assuming that you have four file in a /disk2/images/ directory as follows:
Let us verify it with the ls command:
$ ls
Sample outputs:
To unzip all files, enter:
$ unzip *.zip
Sample outputs:
Above error indicate that you used the unzip command wrongly. It means extract invoices.zip, pictures.zip, and visit.zip files from inside the data.zip archive. Your shell expands the command ‘unzip *.zip’ it as follows:
unzip data.zip invoices.zip pictures.zip visit.zip
The solution is pretty simple when you want to unzip the file using the wild card; you have two options as follows.
#1: Unzip Multiple Files Using Single Quote (short version)
The syntax is as follows to unzip multiple files from Linux command line:
Type the following command as follows:
$ cd /disk2/images/
$ unzip ‘*.zip’
$ ls -l
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Note: *.zip is put in between two single quotes so that shell will not recognize it as a wild card character.
#2: Unzip Multiple Files from Linux Command Line Using Shell For Loop (Long Version)
See also
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
# If files are password protected, and we are not sure which password
for Z_FILE in *.zip; do
for PASSWD in [ pass123, PASS123, abc123, ABC123 ]; do
unzip -P $PASSWD $Z_FILE;
if [ $? = 0 ]; then # successful unzip
break
fi
done
done
This is an excellent hack.
Appreciate your post.
> Appreciate your post.
No probs, copyleft (c) 🙂
Actually I’ve seen yours:
$ for z in *.zip; do unzip $z; done
But, it was not enough for me, ’cause we have password protected ones… So, can say that idea comes from you 🙂 I just added a new feature (validation)…
I think it should/can be improved further to check for other exit status codes…
Maybe later some day…
I used to use for i in *.zip ; do unzip $i ; done as well but then I found out about the following command and use it all the time now.
escape the asterik and you are good to go. 🙂
I tried unzip -P $PASSWD $Z_FILE; command but it is not working and for same zip file it is working in US with same password. I read in one of the web sites that, non USA system needs to install a patch for running above command. If yes Please let me know where can I get this patch else please let me know how to run this command.
Thanks, just what I needed! Very straitghtforward. +1 virtual cookie for you.
If you have spaces in your filenames, you can also use the following:
for z in *.zip; do unzip “$z”; done
find -name \*.zip -exec unzip <> \;
find -name \*.zip | xargs -t -i unzip <>
If you like to extract multiple tar or tar.gz use the following command
for f in *.tar.gz; do tar zxf $f; done
Thanks all for sharing, very useful information about Unzip.
Question: and if I want do delete a file in a batch of different compressed archives? Lets say all copies of “info.txt” or “logo.jpg” in a.zip, b.zip, c.zip(…) z.zip, etc. There is a way to do it?
excellent post …. short method is really awesome..
Exactly what I was looking for! THANK YOU!
Time saver, life saver! Thank you!
thanks a lot …..4 help
if u want to display some msg then…
Thanks everyone for the answers. If space is an issue, you can do something like (from some dude) to remove the archive files as they are unpackaged:
for z in *.zip; do unzip $z; rm $z; done
I have 1..10 zip files in one directory …i want to unzip all files at a time..
can any one help how to do that
Thank you very much.
Thank you very much, on my Debian option #2 works very well!
I had a pile of zip that each contained a index.html file and the archive structure had no folder.. They obviously had to be extracted in separate folders so as to not overwrite the so precious files. Since it was a temporary “view and delete” kind of thing and with well over a hundred files (not needing to be unzipped in a specific folder, current folder was just fine), i came up with this;
for z in *.zip; do q=$(echo $z | cut -f 1 -d ‘.’); unzip $z -d ./$q; done;
It basically extracts all the zip files to the current directory, into a folder named after the zip filename. Greatly inspired (if not totally ripped from!) NixCraft and http://stackoverflow.com/questions/12152626/how-can-remove-the-extension-of-a-filename-in-a-shell-script
Couple seconds after i figured “oh well”, i saved that much time so i might as well make something out of it… So instead of just ‘hardcoding’ it into a simple bash alias that doesn’t take parameters, I took a couple more minutes to have it let me at least input a base directory for extraction. Here’s what i came up with (function in .bashrc file);
unzipALL() <
dir=’.’;
[[ ! -z «$<1>» ]] && dir=$1;
for z in *.zip; do
q=$(echo $z | cut -f 1 -d ‘.’);
unzip $z -d $dir/$q;
done;
>
From the command line just use unzipAll to unzip to the current folder or pass it a folder name: unzipAll /tmp extracts all to /tmp/%filename%.
It does perform a single basic check on the passed parameter but nothing too fancy (strip spaces before/after then checks against null). One could spend more time and cutomize it further, adding bad directory check and all that…
I figure i’d share… thanks and hopefuly it can be of use to someone!
I hope i didn’t break any rules posting a url in here, sorry if so heeh
Awesome job and thanks for sharing it with us.
unzip “*.zip” should also be OK.
unzip *.zip does not work in bash.
blah@blahblah:
/tmp-zip$ unzip *.zip
Archive: test1.zip
caution: filename not matched: test2.zip
blah@blahblah:
unzip \*.zip DOES work, still doesn’t solve the problem i faced of multiple same-name files…
blah@blahblah:
/tmp-zip$ unzip \*.zip
[. ]
inflating: index.html
inflating: portfolio.html
inflating: services.html
Archive: test2.zip
replace index.html? [y]es, [n]o, [A]ll, [N]one, [r]ename:
unzip “*.zip” results in the same, btw.
Hence the quick function. If you have a better way please share
Also, while testing you assumptions, i found out that unzip tries to look for .ZIP files on it’s own – pretty neat… unzip \* would work (still not help with the issue…)
I just pulled a lot of files (over 400K) all of them were in zip, i’m trying to make huge archive off free documents at http://uploadcoins.com , so for me worked # unzip \*.zip , all that 400K went ok 🙂 , so again, You can use unzip \*.zip , Good luck
I want a script to extract a particular file from the multiple zip folder.
Источник
Unzip files in particular directory or folder under Linux or UNIX
Q. I’m new to Linux command line. I’ve a command called unzip and a file called package.zip. I can extract file using command:
unzip package.zip
All files are extracted into current directory (it is making a directory called package). I want all files and subdirectory extracted into /opt directory. How do I extract files in /opt?
A. unzip command will list, test, or extract files from a ZIP archive, commonly found on MS-DOS systems. The default behavior (with no options) is to extract into the current
directory (and subdirectories below it) all files from the specified ZIP archive.
By default, all files and subdirectories are recreated in the current directory; the -d option allows extraction in an arbitrary directory (always assuming one has permission to write to the directory). This option need not appear at the end of the command line; it is also accepted before the zipfile specification (with the normal options), immediately after the zipfile specification, or between the file(s) and the -x option. The option and directory may be concatenated without any white space between them, but note that this may cause normal shell behavior to be suppressed.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
For example extract package.zip into /opt, enter:
# unzip package.zip -d /opt
# cd /opt
# ls
If you want to rename package directory use mv command:
# mv package newname
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Linux zip folder | 16 practical Linux zip command examples
Table of Contents
Linux Zip Command Examples
In this tutorial I will share various Unix and Linux zip command examples and scenarios to understand how to zip a folder and how to create a zip file.
zip is a compression and file packaging utility for Unix, VMS, MSDOS, OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and Acorn RISC OS.
Pre-requisite:
Before we zip a folder and create a zip file in Linux or Unix, we must install the zip and unzip utility.
Install zip
In some Linux and Unix variants, zip is installed by default with operating system. You can also manually install zip utility by using yum
Install unzip
Similarly to be able to unzip files and folders in Linux or Unix you will need unzip utility
1. How to zip a folder with multiple files Linux
In this Linux zip command example you will learn, how to zip a folder with multiple files or all files from the current working directory and store the archive at the same location. List the files which you wish to zip using ls command
Let’s take this Linux zip command example. Here we will zip multiple files or rather all the files from current working directory.
Verify the newly created zip file ( rpms.zip )
Now in the last zip command example we archived all the files present inside /tmp/files directory. Now I wish to zip all files except one or some selected files. In this case you must provided the name of the files which you wish to archive so zip will only consider those files for compression and archive.
So now our archive only contains two files which we provided as input and the archive was stored in the same path.
2. How to create a zip file by excluding some files
Use -x or —exclude to zip all files except some files to exclude files from being compressed and archived in Linux or Unix
Below Linux zip command example will show how to create a zip file with all files except some files.
To create zip a folder with all files except some files using a regex, here all file names starting with bc will be excluded
To create a zip folder by excluding multiple files
Similarly you can also zip all folders and exclude some directories using -r to zip directories
3. How to zip a folder by compressing directory and sub-directories
By default zip command will only compress files. if you attempt to compress directory, then you may get below output
As you see the stored content was 0%. So how to zip a folder or directory?
Use -r or —recurse-paths to zip a folder in Linux or Unix and compress directory structure recursively using Linux zip command example:
4. How to display zip archive content
We can use -dc or —display-counts to display running zip file count of entries. Check below Linux zip command example to list zip archive content without extracting.
5. How to zip a folder with password protection
You can zip a folder and also password protect the zip file using -e or —encrypt . With this argument you create a zip file with an encrypted password. Let us use this Linux zip command example to understand this better:
Now how to unzip files? If you try to unzip to directory, the zip file will prompt for password. Without password you will not be able to unzip to directory.
6. How to update or modify existing file in zip archive
You can use -f or —freshen to update or modify zip file content. With -f you replace (freshen) an existing entry in the zip archive only if it has been modified more recently than the version already in the zip file, unlike the update option (-u) this will not add files that are not already in the zip archive.
You can modify zip file content here.
Now add some more content to the existing file
7. How to add files to existing zip archive
How to add files to the existing zip archive, instead of creating a new zip archive. If this operation fails, zip attempts to restore the archive to its original state . If the restoration fails, the archive might become corrupted. This option is ignored when there’s no existing archive or when at least one zip archive member must be updated or deleted.
In my earlier Linux zip command example I had created a zip archive /tmp/test_archive.zip . Here we will will add new files to the same zip archive
8. How to list zip archive contents without extracting
You can also list zip archive contents without unzip to directory using -sf . For instance you have a requirement to check if a file exists in the archive so without unzip to directory you can list the zip file contents on the output and use additional regex and tools to grep the file you are looking for.
9. How to create a zip file without complete path (Store only the file name)
By default when we create a zip archive, it stores the relative path for the archived content. Lets take this Linux zip command example which stores the relative path of files:
Here list the content of test_archive , as you see the relative path is stored along with the filename
So to create a zip file in Linux without complete path and only store the filename in zip archive, we use -j or —junk-paths . This will create a zip archive without relative path of the files and store just the name of file (junk the path), and do not store directory names. For Example:
List and verify the zip archive content.
10. How to create a zip file and delete original files after archiving
- By default when you create a zip file, it leaves the original files and folders after creating archive,
- But you can also make zip delete original files after archiving is complete.
- Instead of copy, Move the specified files into the zip archive
- Actually, this deletes the original target directories/files after making the specified zip archive.
- If a directory becomes empty after removal of the files, the directory is also removed.
- No deletions are done until zip has created the archive without error .
This is useful for conserving disk space, but is potentially dangerous so it is recommended to use it in combination with -T to test the archive before you make zip delete original files after archiving. In this we create a zip archive, and then delete the original files are we zip the folder.
After you zip a folder, verify the content stored under /tmp/files . So as expected the original files are deleted from the source location after archiving.
Similarly to store the entire content of /tmp/files including the source directory use -r directive
As expected our source directory is also deleted after archiving
11. How to zip a folder with higher compression level
When we zip a folder, the default zip compression level is -6 . zip command supports compression level from 4 where 0 means no compression and -9 means highest (maximum) compression. We will perform basic compression and monitor the time difference
With the default compression level, when we create a zip folder, the compressing of 1668 rpms the zip tool took
The original size of the source location was
which after compression is 842M so we saved
We increase the compression level to -9 and create a zip folder which is considered as the highest or maximum compression level.
Now with higher level of compression, zip took additional 3 seconds to complete the compression but we only save 1MB overall in our archive so the advantage was not very high compared to the time we invested.
12. How to copy files between two zip archives
You can also copy files from one zip archive to another using -U or —copy-entries argument without extracting.
Also requires the —out option to specify a different output file than the input archive.
Here in this Linux zip command example we copy files between two zip archives, I have an input archive with below content
I will copy one of the rpm to another new archive
Verify the content of the output_archive
If no input files appear on the command line and —out is used, copy mode is assumed:
13. Linux zip directory and remove files from zip archive
In Linux zip directory and using -d or —delete directive you can delete or remove files from zip archive.
Let us take this Linux zip command example. Here I have a Linux zip archive with below content
So to remove files from zip archive , I will remove two files from the existing zip archive without unzip to directory
Verify the content of the archive
14. Linux zip folder and preserve symbolic links
For UNIX and VMS (V8.3 and later) use -y or —symlinks , create a zip folder and store and preserve symbolic links in zip archive.
This can avoid multiple copies of files being included in the archive as zip re curses the directory trees and accesses files directly and by links.
Let’s take this Linux zip command example. Here I have created a dummy file inside my root’s home folder and added some content.
Create a symlink to this dummy file
Verify the symlink
Next create a zip folder including symlink using -y or —symlinks argument to make zip preserve symbolic links
I will create a dummy location to extract the archive and verify the symlink
Unzip to directory using unzip command
Unzip to directory the newly created archive using unzip to make sure zip was able to preserve and store symbolic links
So with -y we make zip preserve symbolic links
Next verify the symlink content.
15. How to create a zip file and compress with bzip2
You can create a zip file with bzip2 compression. Set the default compression method using -Z or —compression-method . Currently the main methods supported by zip are store and deflate. Compression method can be set to:
- store — Setting the compression method to store forces zip to store entries with no compression. This is generally faster than compressing entries, but results in no space savings. This is the same as using -0 (compression level zero).
- deflate — This is the default method for zip. If zip determines that storing is better than deflation, the entry will be stored instead.
- bzip2 — If bzip2 support is compiled in, this compression method also becomes available.
Extract content using unzip command
Extract the content using unzip to directory
16. How to zip a folder and later split zip archive
- How to zip a folder and enable creating a split zip archive and set the split size using -s or —split-size .
- A split zip archive in Linux and Unix is an archive that could be split over many files.
- As the zip archive is created, if the size of the archive reaches the specified split size, that split is closed and the next split opened.
- In general all splits but the last will be the split size and the last will be whatever is left .
- If the entire archive is smaller than the split size a single-file archive is created.
- Split size is a number optionally followed by a multiplier.
- Currently the number must be an integer.
- The multiplier can currently be one of k (kilobytes), m (megabytes), g (gigabytes), or t (terabytes).
- As 64k is the minimum split size, numbers without multipliers default to megabytes
Let’s use this Linux zip command example to create a zip folder with split enable. I have Packages directory with files having size of 902MB. Here I will create zip archive
The last file as you see is of 36MB while all the other archive is of 200MB which we had used as the split size
Lastly I hope the steps from the article to compress and archive using zip command and cover scenarios life zip multiple files and folders, zip all files except some files and folders, compress directory and preserve symbolic links, remove files from zip archive, zip delete original files in Linux and Unix was helpful. So, let me know your suggestions and feedback using the comment section.
References:
Related Posts
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
Источник