Subscribe to How-To Geek

Recommended: Click Here to Run a Free Scan for Common PC Errors   [Sponsored Link]

Unzip or Unrar Many Files at Once in Linux

If you've got a directory with dozens of zipped or rar'd files, you can run a single command to unzip them all in one step, thanks to the power of the bash shell.

For this task, we'll use bash's for loop command structure. Replace <var> with a variable name, and <list> with either a command that outputs a list or an explicit list.

for <var> in <list>
do
   command $<var>;
done

You can run it on a single line with this syntax instead:

for <var> in <list>;do command $<var>;done

So if you want to unrar a list of files, you could use this command. You don't necessarily need the quotes, but it helps when the filenames have spaces or something like that in them.

for f in *.rar;do unrar e "$f";done

If you wanted to use 7zip to extract a list of files:

for f in *.001;do 7z e "$f";done

Or if you wanted to unzip a list of files:

for f in *.zip;do unzip "$f";done

You could even chain commands together if you wanted to. For instance, if all your zip files contained .txt files and you wanted to unzip them and then move the unzipped files to another directory:

for f in *.zip;do unzip "$f";done; for f in *.txt;do mv "$f" /myfolder/;done

The bash shell is just so incredibly powerful… this doesn't even tap the power, but it should give you a good idea of what is possible.

The Geek is the founder of How-To Geek and a geek enthusiast. When he's not coming up with great how-to articles, he's probably writing at his personal blog. This article was written on 05/28/07 and tagged with: Ubuntu

Comments (8)

  1. Mr Linux

    Actually, I'm pretty sure with both these commands you can just do this:

    unzip *.zip
    unzip *.rar

    Seems a bit more straightforward. :-)

  2. The Geek

    That may work sometimes, but didn't work for me. (just tried it again to make sure)

    The article is mostly illustrating how to use the for / do in bash =)

  3. BookJunkie

    How would I go about 'rarring' :) or zipping a bunch of folders?

  4. Bill Compton

    Hi Jim. Photos i received. Thanks

  5. jose

    Is there a decompressor that extracts almost all file types, if so which?

  6. hoberion

    find -name *.zip -exec unzip {} \;

  7. Ranga

    Try unzip \*.zip - It works in RED HAT flavours, I have not tried it on any other linux.

  8. Alp

    Why didn't i find this 3 days ago? The only matter is that the files aren't extracted in subdirectories. I made a similar script myself. Take a look: http://ubuntu.alperortac.de/20.....ubfolders/


Leave a Comment




Leave your friendly comment here. If you have a computer help question, leave it on the forums instead.

Note: Your comment may not show up immediately on the site.

Copyright © 2006-2008 HowToGeek.com. All Rights Reserved.