#!/usr/bin/perl -w #KOI8-U use strict; use File::Copy; my $verbose=1; if(scalar(@ARGV)==0) { print "Usage: $0 DIRECTORY\n"; exit(0); } my $dir=$ARGV[0]; renameDir($dir); exit(0); sub renameDir { my ($dir)=@_; opendir(DIR,$dir); my @files=grep { /^[^\.]/ } readdir(DIR); close(DIR); foreach my $file(@files) { if(-f "$dir/$file") { renameFile($dir,$file); }elsif(-d "$dir/$file") { renameDir("$dir/".renameFile($dir,$file)); } } } sub renameFile { my ($dirName,$fileName)=@_; my $newFileName=ukr2lat($fileName); if($fileName ne $newFileName) { print STDERR "Renaming \"$fileName\" to \"$newFileName\"\n" if($verbose); if(-f "$dirName/$fileName") { move("$dirName/$fileName","$dirName/$newFileName"); }else { system('mv','-f',"$dirName/$fileName","$dirName/$newFileName"); } }else { print STDERR "Skipping \"$fileName\"\n" if($verbose); } return $newFileName; } sub ukr2lat { my ($name)=@_; $name=~s/úç/ZGH/g; $name=~s/úÇ/Zgh/g; $name=~s/Úç/zGH/g; $name=~s/ÚÇ/zgh/g; $name=~s/á/A/g; $name=~s/Á/a/g; $name=~s/â/B/g; $name=~s/Â/b/g; $name=~s/÷/V/g; $name=~s/×/v/g; $name=~s/ç/H/g; $name=~s/Ç/h/g; $name=~s/½/G/g; $name=~s/­/g/g; $name=~s/ä/D/g; $name=~s/Ä/d/g; $name=~s/å/E/g; $name=~s/Å/e/g; $name=~s/´/YE/g; $name=~s/¤/ye/g; $name=~s/ö/ZH/g; $name=~s/Ö/zh/g; $name=~s/ú/Z/g; $name=~s/Ú/z/g; $name=~s/é/Y/g; $name=~s/É/y/g; $name=~s/¶/I/g; $name=~s/¦/i/g; $name=~s/·/YI/g; $name=~s/§/yi/g; $name=~s/ê/Y/g; $name=~s/Ê/y/g; $name=~s/ë/K/g; $name=~s/Ë/k/g; $name=~s/ì/L/g; $name=~s/Ì/l/g; $name=~s/í/M/g; $name=~s/Í/m/g; $name=~s/î/N/g; $name=~s/Î/n/g; $name=~s/ï/O/g; $name=~s/Ï/o/g; $name=~s/ð/P/g; $name=~s/Ð/p/g; $name=~s/ò/R/g; $name=~s/Ò/r/g; $name=~s/ó/S/g; $name=~s/Ó/s/g; $name=~s/ô/T/g; $name=~s/Ô/t/g; $name=~s/õ/U/g; $name=~s/Õ/u/g; $name=~s/æ/F/g; $name=~s/Æ/f/g; $name=~s/è/KH/g; $name=~s/È/kh/g; $name=~s/ã/TS/g; $name=~s/Ã/ts/g; $name=~s/þ/CH/g; $name=~s/Þ/ch/g; $name=~s/û/SH/g; $name=~s/Û/sh/g; $name=~s/ý/SCH/g; $name=~s/Ý/sch/g; $name=~s/ø/\`/g; $name=~s/Ø/\`/g; $name=~s/à/YU/g; $name=~s/À/yu/g; $name=~s/ñ/YA/g; $name=~s/Ñ/ya/g; return $name; }