The following script renames the files of the current directory. All white space characters are replaced by '_'.
#!/usr/bin/perl -w use strict; sub yesno { print "$_[0] y/[n]: ";return (<STDIN> =~ /^(y|Y)$/);} # # read the file names of the current directory # opendir( D, "."); my @files = readdir(D); closedir( D); foreach my $fname (@files) { # # remove leading/trailing white space # $fname =~ s/^\s*(.*?)\s*$/$1/; # # see, if the file name still contains white space # next if( $fname !~ /\s/ && $fname !~ /[\200-\377]/); my $fname_new = $fname; # # replace any white space character by '_', Umlaute # $fname_new =~ s/\s/_/g; $fname_new =~ s/\344/ae/g; $fname_new =~ s/\304/Ae/g; $fname_new =~ s/\366/oe/g; $fname_new =~ s/\326/Oe/g; $fname_new =~ s/\374/ue/g; $fname_new =~ s/\334/Ue/g; $fname_new =~ s/\337/sz/g; if( yesno( " rename \"$fname\" to $fname_new")) { system( "mv \"$fname\" $fname_new"); } } exit 0;