#!/usr/bin/perl -w

# Entfernt nicht darstellbare Umlaute und Leerzeichen aus Dateibaum
# und benennt Dateien um.
# Aufruf Scriptname Startverzeichnis
# ohne Startverzeichnis wird das aktuelle genommen

use strict;
use File::Find;

if (@ARGV == 0) { push (@ARGV, "."); }
finddepth(\&modify, @ARGV);



sub modify {
# Verzeichnisse ignorieren
return unless -f $_;
# Returnvariable sichern und Uppercase to Lowercase
my $new=$_;
$new=~s|([A-Z])*|lc$1|eg;
#Leerzeichen raus kannst du hier aber anpassen
#z.B Leerzeichen durch Punkt dann hier auskommentieren
#$new=~s|\s+|.|ig;
$new=~s|\s+||ig;
#eventuelle haessliche WindoZe - Probleme mit Umlauten udgl. ersetzen
    if ($new=~/[\204\224\201\216\231\232\341\202]/) 
	{	
	$new =~ tr/\204\224\201\216\231\232\341\202/äöüÄÖÜßé/; 
     }       
	if ( -f $new){
		print "$new existiert bereits, wird nicht ersetzt\n";			
		}
		else{
	print "Verschiebe Datei alt ",$File::Find::dir, ": $_ nach neu -> $new\n";
	rename $_, $new or die "cannot rename $_ to $new: $!";
    			}
	
return $_;
}