From: Mark Seuffert (Pirates) (captain_at_pirate.de)
Date: 26. Nov 2000
Hallo,
ich möchte eine Reihe von Dateien umbenennen, was eignet sich denn für
diese Aufgabe besonders?
Ich habe ein Perl-Script geschrieben, eines das Dateienamen globt,
einzelnd per RE den Namen verändert und umbenennt. Dummerweise
scheitert glob bei Filenamen die Space beinhalten, ich habe mal einen
"quick&dirty" Workaround eingebaut.... Ideen oder Verbesserungen?
#!/usr/bin/perl
#mp3norm.pl - Normalize MP3 file names V0.1, Moak Nov 2000\n
#Change files from "[band]song_name.mp3" into "band - song name.mp3"
@files = (`*.mp3`,'*.MP3');
$debug = 1;
if ($#ARGV>=0) {
print "mp3norm - Normalize MP3 file names in current directory V0.1, Moak Nov 2000\n";
exit 1;
}
print "Normalize MP3 file names...\n";
$count = 0;
foreach $file (@files) { #get all MP3 files in current directory
@ls = glob($file);
#however, glob fails on filenames with space inside
undef @ls; #here is a (linux) workaround, TODO: better solution
@lstemp = `ls -al`;
foreach $line (@lstemp) {
chop $line;
$line =~ s/^(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*)/$9/g;
push @ls, $line;
}
foreach $filename (@ls) { #here we go
print "file $filename\n" if($debug>1);
if($filename =~ /^\[(.*?)\](.*?).mp3/i) {
$newfilename = "$1 - $2.mp3"; #create new file name
$newfilename =~ s/_/ /g;
rename ($filename, $newfilename) || die ("Can't rename $filename: $!\n") if(!$debug);
print "rename $filename -> $newfilename\n" if($debug);
$count++;
}
}
} #work is done
print "Changed $count file(s)".($debug?" DEBUG ONLY - nothing changed":"")."\n";
-- Mark "Moak" Seuffert, Pirates Technologies, http://www.pirate.de
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET