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