I've been trying to expand on my rudimentary scripting.

Here's my current attempt:

Goal: script will search recursively for files of types .zip, .rar &
.tar. Each file will be unpacked in a new directory (of the name of
the original archive, in the directory where the archive resides) and
if possible, the directories in the archives will not be unpacked
(just the files...unrar e as opposed to unrar x)

2 outstanding issues:
1) how to expand my search to three types instead of just one, and
carrying out separate commands depending on the filetype. I'm pretty
sure if/else is required (as opposed to the for that the current,
smaller script uses)
2) Actually modifying the program commands so that it does what is
required. (ie. unrar e filename works on the shell, but not in my
reworking of Brian Hurt's (thank you!) code, and I'm not sure why.

Ed Wilt's contribution can probably be modified to fulfill the search function.

find . -name '*.tar' -exec tar xvf {} \;

Something like this?

find . -name '*.tar' '*.zip' '*.rar' -exec       # is there some
symbol denoting 'or'?
if....
then...

#!/bin/bash

for i in *.rar; do
       mkdir `basename $i .rar`.dir
       cd `basename $i .rar`.dir
       unrar e ../$i
       cd ..
done

# Brian Hurt's original

for i in *.tar; do
       mkdir `basename $i .tar`.dir
       cd `basename $i .tar`.dir
       tar xvf ../$i
       cd ..
done