А ещё есть варианты? Кажется, gr_buza делал какой-то подобный скрипт, но результат не выложил ;) хочется посмотреть, что у него там получилось ... Не хочется с нуля писать. Явно кто-то уже мучался.
>не проще с правильной nls/кодировкой монтировать?
:) Ну, дорогой, не так всё просто :) Я перешёл с кои8 на ср1251, а кое-какие файлы в старой кодировке были на русском. Вот и приходится теперь иногда переделывать название файлов.
>$new_name=iconv -f cp1251 -t koi8-r "$name"
Что касается этого - дык он мне перекодирует файл! А мне надо просто изменить название файлов. Понимаешь разницу? man iconv.
Спасибо конечно за советы ...
Но вот что у меня в итоге получилось (исправления приветствуются!):
find . -type f -depth | while read f ; do
fenc=`echo $f | iconv -f koi8r -t cp1251`
mv "$f" "$fenc"
done
2gr_buza:
Дык нашёл ... а ты можешь положить сюда скрипт, который у тебя в результате получился? Там он вроде понавороченнее был, только недоделанный :( У меня он не пошёл ...
#!/usr/bin/perl -w
use strict;
use File::Find;
use Encode 'from_to';
finddepth \&doit, shift;
sub doit
{
my $n = $_;
from_to($n, "cp1251", "koi8-r");
rename($_, $n) if $_ ne $n;
}
====
запускать:
./script dirname