glockenklang
Mitglied
 Forum-Platinmitglied
| Beiträge: 101 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 14/10/2007 19:27
NoSea schrieb: Hallo,
vielleicht hilft Dir dieser Thread bei ubuntuusers weiter:
http://forum.ubuntuusers.de/topic/37316/?highlight=dateinamen+sonderzeichen
Hallo Ralf
hab das script getestet und angepasst, funktioniert super.
aufruf des scriptes mit: perl umbenennen.pl /pfad/ eigentlich sollte es dann alles unterhalb des pfades ändern. tuts nicht. wie kriege ich (du) es hin das alles unterhalb des /pfades geändert wird. Außerdem fand ich noch eine Ergänzung um alle ".." zu entfernen falls es einen Pfad gibt /bla/bal/../../blub/do/../. Siehe im script die auskommentierte while schleife. Ja die zwei Sachen müßten noch laufen dann wärs perfekt. Poste jetzt mal das script.
#!/usr/bin/perl -w
use strict; use File::Find; use File::Copy;
find &wanted, @ARGV;
#for ( glob('*') ) { # &wanted if -f; #}
sub wanted { return if /^..?$/;
my $orig = $_; my $ch; $ch++ if tr/A-Z/a-z/; $ch++ if s/ /_/g; $ch++ if s/.././g; $ch++ if s/,_/_/g; $ch++ if s/_,/_/g; $ch++ if s/._/_/g; $ch++ if s/_./_/g; $ch++ if s/__/_/g; $ch++ if s/ _/_/g; $ch++ if s/_ /_/g; $ch++ if s/-_/_/g; $ch++ if s/_-/_/g; $ch++ if s/-./_/g; # $ch++ if s/_ogg/.ogg/g; # $ch++ if s//[^/]*/..//g; $ch++ if s/ä/ae/ig; $ch++ if s/ö/ou/ig; $ch++ if s/ü/ue/ig; #$ch++ if s/.(?!....?z)//g; #$ch++ if s/,/u/g;
#sub deleteDoubleDots($) # { # while($_[0] =~ m/../) # { # $_[0] =~ s//[^/]*/..//; # } # }
if ( $ch ) { if ( -e ) { print "Skipped: $orig => $_ : Zieldatei existiert bereits.n"; } else { print "move: $orig => $_n"; move $orig, $_ or warn "Error: move: $orig => $_ : $!n"; } } }
Schöne Woche noch
Wolfgang
Post geändert von: glockenklang, am: 14/10/2007 19:28
|