Есть очень большая куча папок и файлов с русскими названиями, нужно их перевести в транслит. Желательно использовать БАШ или Питон.
Вообще нет никаких мыслей как это сделать-(.
#!/usr/bin/perl
%ru_tr = (
"щ" => "sh'",
"Щ" => "Sh'",
"ё" => "jo",
"ж" => "zh",
"ч" => "ch",
"ш" => "sh",
"э" => "e'",
"ю" => "ju",
"я" => "ja",
"Ё" => "Jo",
"Ж" => "Zh",
"Ч" => "Ch",
"Ш" => "Sh",
"Э" => "E'",
"Ю" => "Ju",
"Я" => "Ja",
"а" => "a",
"б" => "b",
"в" => "v",
"г" => "g",
"д" => "d",
"е" => "e",
"з" => "z",
"и" => "i",
"й" => "j",
"к" => "k",
"л" => "l",
"м" => "m",
"н" => "n",
"о" => "o",
"п" => "p",
"р" => "r",
"с" => "s",
"т" => "t",
"у" => "u",
"ф" => "f",
"х" => "h",
"ц" => "c",
"ъ" => "`",
"ы" => "y",
"ь" => "'",
"А" => "A",
"Б" => "B",
"В" => "V",
"Г" => "G",
"Д" => "D",
"Е" => "E",
"З" => "Z",
"И" => "I",
"Й" => "J",
"К" => "K",
"Л" => "L",
"М" => "M",
"Н" => "N",
"О" => "O",
"П" => "P",
"Р" => "R",
"С" => "S",
"Т" => "T",
"У" => "U",
"Ф" => "F",
"Х" => "H",
"Ц" => "C",
"Ъ" => "`",
"Ы" => "Y",
"Ь" => "'",
);
$dir = $ARGV[0] or die("usage: blahblah.pl root");
enu($dir);
sub enu
{
my $dir = shift;
my $name;
opendir(DIR, $dir) or die $!;
my @files = readdir(DIR);
closedir(DIR);
for $name (@files){
next if($name =~ /^\.+$/);
my $newname = recode($name);
if($newname ne $name){
print "rename '$dir/$name' to '$dir/$newname'\n";
rename("$dir/$name", "$dir/$newname");
}
if(-d "$dir/$newname"){
enu("$dir/$newname");
}
}
}
sub recode
{
my @chars = split('', shift);
my $c;
for $c (@chars){
if(defined($ru_tr{$c})){
$c = $ru_tr{$c};
}
}
$c = join('', @chars);
return $c;
}
#nastay@lu:> ./translit.sh
: command not found 2:
./translit.sh: line 3: syntax error near unexpected token `('
'/translit.sh: line 3: `%ru_tr = (
nastay@lu:> whereis perl
perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz
//Транслит
function transliterate_en_ru( $text2 ) {
$inf1 = str_replace("Ey", "Эй", "$text2");
$inf2 = str_replace("ey", "эй", "$inf1");
$inf3 = str_replace("Oy", "Ой", "$inf2");
$inf4 = str_replace("oy", "ой", "$inf3");
$inf5 = str_replace("Iy", "Ий", "$inf4");
$inf6 = str_replace("iy", "ий", "$inf5");
$inf7 = str_replace("Ay", "Ай", "$inf6");
$inf8 = str_replace("ay", "ай", "$inf7");
$inf9 = str_replace("Уy", "Ый", "$inf8");
$inf10 = str_replace("уy", "ый", "$inf9");
$inf11 = str_replace("Uy", "Уй", "$inf10");
$inf12 = str_replace("uy", "уй", "$inf11");
$inf13 = str_replace("Jo", "Ё", "$inf12");
$inf14 = str_replace("jo", "ё", "$inf13");
$inf15 = str_replace("Jo", "Ё", "$inf14");
$inf16 = str_replace("jo", "ё", "$inf15");
$inf17 = str_replace("Yo", "Ё", "$inf16");
$inf18 = str_replace("yo", "ё", "$inf17");
$inf19 = str_replace("Zh", "Ж", "$inf18");
$inf20 = str_replace("zh", "ж", "$inf19");
$inf21 = str_replace("Ch", "Ч", "$inf20");
$inf22 = str_replace("ch", "ч", "$inf21");
$inf23 = str_replace("Sch", "Щ", "$inf22");
$inf24 = str_replace("sch", "щ", "$inf23");
$inf25 = str_replace("S'h", "Щ", "$inf24");
$inf26 = str_replace("s'h", "щ", "$inf25");
$inf27 = str_replace("S`h", "Щ", "$inf26");
$inf28 = str_replace("s`h", "щ", "$inf27");
$inf29 = str_replace("C`", "Щ", "$inf28");
$inf30 = str_replace("c`", "щ", "$inf29");
$inf31 = str_replace("C'", "Щ", "$inf30");
$inf32 = str_replace("c'", "щ", "$inf31");
$inf33 = str_replace("Sh", "Ш", "$inf32");
$inf34 = str_replace("sh", "ш", "$inf33");
$inf35 = str_replace("Ju", "Ю", "$inf34");
$inf36 = str_replace("ju", "ю", "$inf35");
$inf37 = str_replace("Yu", "Ю", "$inf36");
$inf38 = str_replace("yu", "ю", "$inf37");
$inf39 = str_replace("Ja", "Я", "$inf38");
$inf40 = str_replace("ja", "я", "$inf39");
$inf41 = str_replace("Ya", "Я", "$inf40");
$inf42 = str_replace("ya", "я", "$inf41");
$inf43 = str_replace("Q", "Э", "$inf42");
$inf44 = str_replace("q", "э", "$inf43");
$inf45 = str_replace("E'", "Э", "$inf44");
$inf46 = str_replace("e'", "э", "$inf45");
$inf47 = str_replace("E`", "Э", "$inf46");
$inf48 = str_replace("e`", "э", "$inf47");
$inf49 = str_replace("Kh", "Х", "$inf48");
$inf50 = str_replace("kh", "х", "$inf49");
$inf51 = str_replace("H", "Х", "$inf50");
$inf52 = str_replace("h", "х", "$inf51");
$inf53 = str_replace("X", "Кс", "$inf52");
$inf54 = str_replace("x", "кс", "$inf53");
$inf55 = str_replace("'", "ь", "$inf54");
$inf56 = str_replace("`", "ь", "$inf55");
$inf57 = str_replace("''", "ъ", "$inf56");
$inf58 = str_replace("``", "ъ", "$inf57");
$inf59 = str_replace("X", "Кс", "$inf58");
$inf60 = str_replace("x", "кс", "$inf59");
$inf61 = str_replace("A", "А", "$inf60");
$inf62 = str_replace("a", "а", "$inf61");
$inf63 = str_replace("B", "Б", "$inf62");
$inf64 = str_replace("b", "б", "$inf63");
$inf65 = str_replace("V", "В", "$inf64");
$inf66 = str_replace("v", "в", "$inf65");
$inf67 = str_replace("W", "В", "$inf66");
$inf68 = str_replace("w", "в", "$inf67");
$inf69 = str_replace("G", "Г", "$inf68");
$inf70 = str_replace("g", "г", "$inf69");
$inf71 = str_replace("D", "Д", "$inf70");
$inf72 = str_replace("d", "д", "$inf71");
$inf73 = str_replace("E", "Е", "$inf72");
$inf74 = str_replace("e", "е", "$inf73");
$inf75 = str_replace("Z", "З", "$inf74");
$inf76 = str_replace("z", "з", "$inf75");
$inf77 = str_replace("I", "И", "$inf76");
$inf78 = str_replace("i", "и", "$inf77");
$inf79 = str_replace("J", "Й", "$inf78");
$inf80 = str_replace("j", "й", "$inf79");
$inf81 = str_replace("K", "К", "$inf80");
$inf82 = str_replace("k", "к", "$inf81");
$inf83 = str_replace("L", "Л", "$inf82");
$inf84 = str_replace("l", "л", "$inf83");
$inf85 = str_replace("M", "М", "$inf84");
$inf86 = str_replace("m", "м", "$inf85");
$inf87 = str_replace("N", "Н", "$inf86");
$inf88 = str_replace("n", "н", "$inf87");
$inf89 = str_replace("О", "O", "$inf88");
$inf90 = str_replace("о", "o", "$inf89");
$inf91 = str_replace("P", "П", "$inf90");
$inf92 = str_replace("p", "п", "$inf91");
$inf93 = str_replace("R", "Р", "$inf92");
$inf94 = str_replace("r", "р", "$inf93");
$inf95 = str_replace("S", "С", "$inf94");
$inf96 = str_replace("s", "с", "$inf95");
$inf97 = str_replace("T", "Т", "$inf96");
$inf98 = str_replace("t", "т", "$inf97");
$inf99 = str_replace("U", "У", "$inf98");
$inf100 = str_replace("u", "у", "$inf99");
$inf101 = str_replace("F", "Ф", "$inf100");
$inf102 = str_replace("f", "ф", "$inf101");
$inf103 = str_replace("C", "Ц", "$inf102");
$inf104 = str_replace("c", "ц", "$inf103");
$inf105 = str_replace("Y", "Ы", "$inf104");
$inf106 = str_replace("y", "ы", "$inf105");
$result=$inf106;
return $result;
}
nastay@lu:~> ./translit.sh
: command not found 2:
./translit.sh: line 3: syntax error near unexpected token `('
'/translit.sh: line 3: `%ru_tr = (
nastay@lu:~> ./translit.sh
: bad interpreter: No such file or directory
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12