Brian, I have a question about your code specifically, as I've been trying to modify it, without success. Here's the current incarnation: #!/bin/bash for i in `find . -name '*.tar' -o -name '*.rar' -o -name '*.zip'; do case $i in *.tar) mkdir `basename $i .tar`.dir cd `basename $i .tar`.dir tar xvf ../$i cd .. ;; *.rar) mkdir `basename $i .rar`.dir cd `basename $i .rar`.dir unrar e ../$i cd .. ;; *.zip) mkdir `basename $i .zip`.dir cd `basename $i .zip`.dir unzip -d ../$i cd .. ;; esac done The find definately works. I've tested that. But I haven't been able to get any of the rest to actually do what it's supposed to, and I don't understand what's happening clearly enough. So.... *.tar) # this is the case identifier mkdir `basename $i .tar`.dir # making a new directory, with $i being all characters before .tar. What is the significance of basename or the single quotes? Does .dir change it's 'extension' to a directory? cd `basename $i .tar`.dir # we're moving into the newly made directory, although i'm not sure why the .tar stuff is still there; it's a directory now, right? tar xvf ../$i # we execute tar and look for the file $i in the parent directory cd .. # moving back into the parent dir for the next file ;; # denotes end of case I'm experiencing some errors at the cli as well; line 18: unexpected EOF while looking for matching ``' cd `basename $i .zip`.dir # this is the trouble line line 25: syntax error: unexpected end of file # there is no line 25 ? The code ends at 24. I have to say a huge thank you to everyone who has contributed. I know these are kind of stupid questions, but the shell scripting tutorials aren't covering a lot of this. Thank for stepping me through this beginner shell script. -jordan