Страница 1 из 1

имена файлов, как перегнать в другую кодировку?

Добавлено: 11 апр 2005, 16:49
tes+or
вобщем есть довольно большое кол-во файлов скопированых с неправильно примонтированых носителей. вместо русских символов как водится кракозябры. поначалу не обращал внимания, но теперь руки дошли и до них. источних - в основном сиди нарезаные под маздаем. задача - при помощий какого-то скрипта вернуть именам надлежащий вид.

вариант примонтировать правильно и скопировать еще раз катит но не во всех случаях.

была идея примонтировать фс с ними(у меня рэйзер) в другой кодировке, перелить на соседний раздел, потом примонтировать правильно и перелить обратно. извращенство но тоже способ. однако как реализовать этот способ я не нашел. кажеться не предусмотрено монтирование рэйзера с другими кодировками.

в принципе скриптик оч короткий, но о том как его писать я имею довольно смутное представление. логично было бы делать это утилитой mv. сначала имя файла в переменную, потом ее через iconv, потом то что получилось в другую переменную, а потом mv переменная_1 переменная_2. но как именно..

вопрос парралельно. насколько мне известно в именах файлов на сиди применяеться весьма убогая система являющайся частью iso9660. чтобы эту убогость пофиксить существует два типа расширений. joilet(M$) & RockRidge(Unix). причем они вроде как могут сосуществовать одновременно. у меня один знакомый нарезал так что читалось правильно и там и там, причем с дефолтными установками. т.е. под линухом читался рокридж а под виндой джойлет. я нигде не ошибаюсь?

если несложно посоветуйте что почитать по общему принципу а также по правильному монтированию и нарезке.

Добавлено: 11 апр 2005, 20:40
Llama
tes+or,
dd
mkfs.vfat
mount -o loop,iocharset
cp
umount
mount -o loop,iocharset
cp

Идея ясна ?

Добавлено: 11 апр 2005, 22:23
Anonymous

Код: Выделить всё

for from in *
do
  to=`echo $f|iconv -f koi8-r -t utf-8`
  [ "$to" = "$from" ] || mv "$from" "$to"
done
Рекурсию добавить по вкусу.

Добавлено: 11 апр 2005, 22:33
tes+or
Llama, да, вполне. правда у меня нет лишних разделов, а ресайзить дело опасное. зато есть лишние веники) на крайняк так и сделаю. но вот тут ниже по тексту человек скрипт предложил. щас попробуем.

viv, похоже на правду. сейчас попробуем. если нет, вернусь с вопросами.

Добавлено: 11 апр 2005, 23:58
tes+or
viv, для начала я проверил сам метод. методом тыка было выяснено что работает след. конструкция:

echo (имя файла для обработки, вводиться при помощи ТАБ дополнения) | iconv -f utf-8 -t koi8-r

на выходе получаем корректное имя файла

соответствующим образом правлю предложеный скрипт, помещаю его а диру с кривыми файлами и запускаю.

mv: cannot move `[здесь еще кривое имя файла] to `': No such file or directory

и так для каждого файла. продиагностировать ошибку затрудняюсь, за незнанием шелла.

удалось нормально примонтировать cd. достаточно было iocharset=utf-8 исправить на koi8-r(дело в том что я переводил систему с юникода на кой). насколько я понял это кодировка в которой символы идут с девайса на консоль. а т.к. на консоли у меня кой, то очевидно. каким волшебным образом они с любого диска выходят в указаной кодировке - хз(а из этих хз потом получаються подводные грабли, ну да ладно).

Добавлено: 12 апр 2005, 09:13
Anonymous
Да, погнался за читабельностью, потерял переменную
Должно быть так:

Код: Выделить всё

for from in *
do
  to=`echo $from|iconv -f koi8-r -t utf-8`
  [ "$to" = "$from" ] || mv "$from" "$to"
done

Добавлено: 12 апр 2005, 11:38
zotrix
luche recode -f ispol`zovat`

Добавлено: 12 апр 2005, 12:26
Llama
или хотя бы уж iconv -c.. Имхо наиболее вменяемый перекодировщик - это все же konwert. На recode были неприятные прецеденты обломов... Про iconv даже с -c я вообще помолчу..

Добавлено: 12 апр 2005, 15:40
booxter
а яшчэ ёсьць уціліта convmv. Вельмі добры кадзіроўшчык, заточаны менавіта на імёны файлаў.

Добавлено: 13 апр 2005, 00:27
tes+or
да, была мысль что я изобретаю велосипед.

Добавлено: 24 апр 2005, 22:58
tes+or
вот. только сейчас руки дошли. всем спасибо, помогло. использовал в итоге convmv. оказалось предельно удобно.

Добавлено: 25 апр 2005, 20:23
booxter
Nu dyk, ja drennaha ne paradzu:)