From: Karl Cunningham <[EMAIL PROTECTED]>
I'm trying to write a bash script to distribute some music files from one
directory to various subdirectories based a correlation between the file
and directory names. The files are mp3s and almost all contain spaces in
the filenames. The filenames are of the form:
artist - title.mp3
The directories are named to correspond to the artist names. For each
directory found the script should move all mp3 files that start with the
same text as the directory name into the corresponding directory. For
instance, a file named 'Bob Dylan - Subterranean Homesick Blues.mp3' should
get moved into the './Bob Dylan' directory. I tried the following but
everything winds up in the root directory. Any help is appreciated.
Is shell necessary? Here's my idea in perl (note- no testing was actually
done, may have minor bugs, run on a test directory before applying to the
whole dataset):
#list all mp3 files
@files=`ls $origDir*.mp3`;
#loop over list of files, processing each
foreach my $fileName (@$files){
#parse out the artist and song
$fileName =~ m/(.*) - (.*)/ or die "Song $fileName in wrong format";
my $newFileName="$1/$2";
#make sure that the subdir exists, if not create it
if(!(-e $1)){
mkdir($1);
}
#do the move
rename($fileName,$newFileName);
}
Gabe
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list