Q. I’ve lots of files in a directory called /disk2/images. All files are zip file format , so I am using following command:
unzip *.zip
Which is result into an error as follows:
caution: filename not matched
How do I unzip multiple / many files under Linux?
A. Linux or UNIX unzip command will list, test, or extract files from a ZIP archive, commonly found on MS-DOS systems.
When you want to unzip file using wild card, you have two options as follows.
Option # 1 : unzip multiple files using single quote (short version)
Type the command as follows:
$ unzip ‘*.zip’
Note that *.zip word is put in between two single quote, so that shell will not recognize it as a wild card character.
Option # 2 : unzip multiple files using shell for loop (long version)
You can also use for loop as follows:
$ for z in *.zip; do unzip $z; done
See also
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- My 10 UNIX Command Line Mistakes
- Linux: 20 Iptables Examples For New SysAdmins

- 25 PHP Security Best Practices For Sys Admins
- The Novice Guide To Buying A Linux Laptop
- 10 Greatest Open Source Software Of 2009
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
Facebook it - Tweet it - Print it -


{ 13 comments… read them below or add one }
# 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
Kamchybek,
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.
unzip \*.zip
escape the asterik and you are good to go. :)
Hi
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
Naresh
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!