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