Recursive unrar of several folders

8

9

I have several RAR archives spread around multiple directories but all under a particular root folder on my Debian based NAS. Could someone help me write a simple script that would recursively go into each folder, unrar the contents, go back to the parent folder and move onto the next directory? So:

cd Photos/Summer/Italy/
unrar e Italy.rar
wait
cd ../France/
unrar e France.rar
wait
etc...

So just point it to root folder "Photos" and it blitzes through it unraring everything on the way...

Eg, directory structure:

*Photos:
 -Summer
  --Italy
   ---Italy.rar
   ---Italy.r01
   ---Italy.r02
  --France
   ---France.rar
   ---France.r01
   ---France.r02
 -Winter
  --Siberia
   ---Siberia.rar
   ---Siberia.r01
   ---Siberia.r02
  --Canada
   ---Snow.rar
   ---Snow.r01
   ---Snow.r02

Touff

Posted 2012-04-11T00:06:38.770

Reputation: 178

Answers

15

find Photos/ -name '*.rar' -execdir unrar e {} \; 

Ignacio Vazquez-Abrams

Posted 2012-04-11T00:06:38.770

Reputation: 100 516

Brilliant, didn't know it was so easy! Thank you very much! – Touff – 2012-04-16T23:17:02.370

3

unrar has built-in recursion using the -r Recurse subdirectories switch.

unrar x -r <parent directory> Extracts contents of all subdirectories under <parent directory> into each subdirectory, keeping any directory structure that exists in the .rar files. Use e instead of x if directory structure is unwanted.

hmj6jmh

Posted 2012-04-11T00:06:38.770

Reputation: 371

This will extract the files from the subdirectory archives into <parent directory>. It won't place the extracted files into the subdirectory next to the .rar files. So it depends on what outcome is desired. The OP wasn't specific in this case. Sometimes your answer is useful to me but other times I need the find answer. – Cliff – 2019-08-09T00:05:36.557

1

If you want to move the unrar'd photos to another destination, just enter the destination in the end, like this:

find source_dir/ -name '*.rar' -execdir unrar e -o- {} /new/destination_dir/ \;

Dennis

Posted 2012-04-11T00:06:38.770

Reputation: 11