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

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

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

Сообщение tes+or »

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

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

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

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

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

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

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

tes+or,
dd
mkfs.vfat
mount -o loop,iocharset
cp
umount
mount -o loop,iocharset
cp

Идея ясна ?
Опыт растет прямо пропорционально выведенному из строя оборудованию

Anonymous

Сообщение Anonymous »

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

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

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

Llama, да, вполне. правда у меня нет лишних разделов, а ресайзить дело опасное. зато есть лишние веники) на крайняк так и сделаю. но вот тут ниже по тексту человек скрипт предложил. щас попробуем.

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

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение 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(дело в том что я переводил систему с юникода на кой). насколько я понял это кодировка в которой символы идут с девайса на консоль. а т.к. на консоли у меня кой, то очевидно. каким волшебным образом они с любого диска выходят в указаной кодировке - хз(а из этих хз потом получаються подводные грабли, ну да ладно).

Anonymous

Сообщение Anonymous »

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

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

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

zotrix
Интересующийся
Сообщения: 65
Зарегистрирован: 01 янв 2005, 11:52

Сообщение zotrix »

luche recode -f ispol`zovat`

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

или хотя бы уж iconv -c.. Имхо наиболее вменяемый перекодировщик - это все же konwert. На recode были неприятные прецеденты обломов... Про iconv даже с -c я вообще помолчу..
Опыт растет прямо пропорционально выведенному из строя оборудованию

booxter
Неотъемлемая часть форума
Сообщения: 1427
Зарегистрирован: 04 апр 2004, 21:04

Сообщение booxter »

а яшчэ ёсьць уціліта convmv. Вельмі добры кадзіроўшчык, заточаны менавіта на імёны файлаў.

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

да, была мысль что я изобретаю велосипед.

Аватара пользователя
tes+or
Неотъемлемая часть форума
Сообщения: 535
Зарегистрирован: 16 дек 2004, 17:47
Откуда: minsk
Контактная информация:

Сообщение tes+or »

вот. только сейчас руки дошли. всем спасибо, помогло. использовал в итоге convmv. оказалось предельно удобно.

booxter
Неотъемлемая часть форума
Сообщения: 1427
Зарегистрирован: 04 апр 2004, 21:04

Сообщение booxter »

Nu dyk, ja drennaha ne paradzu:)

Закрыто