rulururu

post Unzip or Unrar many files at once

March 22nd, 2008

Filed under: Linux — Kai @ 4:03 pm

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 powerfull, this doesn’t even tap the power, but it should give you a good idea of what is possible.

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

ruldrurd
Powered by WordPress, Content and Design by Kai Bellmann
Entries (RSS) and Comments (RSS)