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
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop













{ 16 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!
Time saver, life saver! Thank you!
thanks a lot …..4 help
if u want to display some msg then…
for z in *.zip;
do unzip $z;
done
echo “ALL FILE ARE UNZIP SUCCESSFULLY”
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