[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Leerstellen in Dateinamen



#include <hallo.h>
* Matthias Taube [Tue, Apr 18 2006, 09:59:50PM]:
> Klaus Becker schrieb:
> 
> > Wie kann ich die Leerstellen durch underscores ("_") ersetzen und die 
> > Leerstellen vor und nach dem Bindestrich rausschmeißen?
> 
> Am besten mit Scripts.
> Ich habe mir eins geschrieben was aus ogg- und mp3 tags mir genehme
> Dateinamen erzeugt.
> 
> Der entsprechende Filterteil im Perlscript sieht wie folgt aus:
> 
> sub clean {
>     my $ein = shift;
>     unless ( defined $ein ) { $ein = "unknown" }

Args. Mein etwas radikaleres Skript sieht etwa so aus, und arbeitet
rekursiv... und beschränkt den Zeichensatz auf steinzeitliche
/[^a-zA-Z.\-_0-9]/:


#!/usr/bin/perl

$doit=($ARGV[0] eq "-y");
 
use Cwd;

sub explore {
    my $where=getcwd;
    my $dir=$_[0];
    chdir $dir;
    opendir(DIR, ".") || die "Could not open $dir\n";
    my @stuff=readdir(DIR);
    for my $f (@stuff) {
        next if ($f eq "." || $f eq "..");
        if(-d $f) {
            explore($f);
        }
        $g=$f;
        $g=~s/[^a-zA-Z.\-_0-9]/_/g;
        if($f ne $g) 
        {
            print "$where/$dir/$f -> $g\n";
            if($doit) {
                rename($f, $g) || die "Problem renaming :-( - $!";
            }
        }
    }
    chdir $where;
}

explore(".");
print "Use -y to apply listed changes...\n" if(!$doit);



Reply to: