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

Reply via email to