#!/usr/bin/perl my $top=`pwd`; chomp $top; sub vfat_rename($$) { my $from,$to; ($from,$to) = @_; # uppercase DOS names with the vfat driver need some forceful convincing # to actually make them lowercase rename($from,"$to.xxx.xx"); rename("$to.xxx.xx",$to); } sub scan($) { my $old = `pwd`; chomp $old; my $cur = shift @_; my @x; print "scanning $cur\n"; chdir($cur) || die; opendir(X,".") || return; while (my $name = readdir(X)) { next unless -f $name; my $n = lc($name); next if $n eq $name; print "$name\n"; rename($name,$n) || die; vfat_rename($name,$n); } closedir(X); opendir(X,".") || return; while (my $name = readdir(X)) { next if $name =~ m/^\.+$/; next if $name eq ".git"; next if $name eq ".GIT"; next unless -d $name; my $n = lc($name); next if $n eq $name; print "$name\n"; rename($name,$n) || die; vfat_rename($name,$n); } closedir(X); opendir(X,".") || return; while (my $name = readdir(X)) { next if $name =~ m/^\.+$/; next if $name eq ".git"; next if $name eq ".GIT"; next unless -d $name; push(@x,$name); } closedir(X); foreach my $name (@x) { scan("$cur/$name"); } chdir($old) || die; } scan($top);