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

Re: Leerstellen in Dateinamen



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" }
    my $aus = $ein;
    chomp($aus);
    my $decoder = guess_encoding( $aus, "iso-8859-1" );
    if ( ref($decoder) ) {    # decoder erkannt
        Encode::from_to( $aus, "iso-8859-1", "utf8" );
    }
    $aus = lc($aus);
    $aus =~ s/(ö|Ö)/oe/g;
    $aus =~ s/(ä|Ä)/ae/g;
    $aus =~ s/(ü|Ü)/ue/g;
    $aus =~ s/ß/sz/g;
    $aus =~ s/[^0-9a-z_\-]/_/g;
    $aus =~ s/^\-/_/;
    $aus =~ s/_+/_/g;
    if ( length($aus) < 1 ) { $aus = "unknown"; }
    return ($aus);
}

Du kannst natürlich auch ein Bash-Script nehmen:
filter()
{
   VAR=`echo $1 | tr -c -d "a-zäöüßÄÖÜA-Z0-9+(),;_. -" \
   | tr "[:upper:]äöüßÄÖÜ,;+. " "[:lower:]äöüßäöü_____" \
   | sed -e 's/ä/ae/g' -e 's/ü/ue/g' -e 's/ö/oe/g' -e 's/ß/sz/g' \
   | tr -s "_" | cut -c -30`
   [ `echo "$VAR" | cut -c -1` = "_" ] && VAR=`echo "$VAR" | cut -c 2-`
   echo "$VAR"
}

mfg
Matthias Taube



Reply to: