имена файлов, как перегнать в другую кодировку?
- tes+or
- Неотъемлемая часть форума
- Сообщения: 535
- Зарегистрирован: 16 дек 2004, 17:47
- Откуда: minsk
- Контактная информация:
имена файлов, как перегнать в другую кодировку?
вобщем есть довольно большое кол-во файлов скопированых с неправильно примонтированых носителей. вместо русских символов как водится кракозябры. поначалу не обращал внимания, но теперь руки дошли и до них. источних - в основном сиди нарезаные под маздаем. задача - при помощий какого-то скрипта вернуть именам надлежащий вид.
вариант примонтировать правильно и скопировать еще раз катит но не во всех случаях.
была идея примонтировать фс с ними(у меня рэйзер) в другой кодировке, перелить на соседний раздел, потом примонтировать правильно и перелить обратно. извращенство но тоже способ. однако как реализовать этот способ я не нашел. кажеться не предусмотрено монтирование рэйзера с другими кодировками.
в принципе скриптик оч короткий, но о том как его писать я имею довольно смутное представление. логично было бы делать это утилитой mv. сначала имя файла в переменную, потом ее через iconv, потом то что получилось в другую переменную, а потом mv переменная_1 переменная_2. но как именно..
вопрос парралельно. насколько мне известно в именах файлов на сиди применяеться весьма убогая система являющайся частью iso9660. чтобы эту убогость пофиксить существует два типа расширений. joilet(M$) & RockRidge(Unix). причем они вроде как могут сосуществовать одновременно. у меня один знакомый нарезал так что читалось правильно и там и там, причем с дефолтными установками. т.е. под линухом читался рокридж а под виндой джойлет. я нигде не ошибаюсь?
если несложно посоветуйте что почитать по общему принципу а также по правильному монтированию и нарезке.
вариант примонтировать правильно и скопировать еще раз катит но не во всех случаях.
была идея примонтировать фс с ними(у меня рэйзер) в другой кодировке, перелить на соседний раздел, потом примонтировать правильно и перелить обратно. извращенство но тоже способ. однако как реализовать этот способ я не нашел. кажеться не предусмотрено монтирование рэйзера с другими кодировками.
в принципе скриптик оч короткий, но о том как его писать я имею довольно смутное представление. логично было бы делать это утилитой mv. сначала имя файла в переменную, потом ее через iconv, потом то что получилось в другую переменную, а потом mv переменная_1 переменная_2. но как именно..
вопрос парралельно. насколько мне известно в именах файлов на сиди применяеться весьма убогая система являющайся частью iso9660. чтобы эту убогость пофиксить существует два типа расширений. joilet(M$) & RockRidge(Unix). причем они вроде как могут сосуществовать одновременно. у меня один знакомый нарезал так что читалось правильно и там и там, причем с дефолтными установками. т.е. под линухом читался рокридж а под виндой джойлет. я нигде не ошибаюсь?
если несложно посоветуйте что почитать по общему принципу а также по правильному монтированию и нарезке.
Код: Выделить всё
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
- Контактная информация:
viv, для начала я проверил сам метод. методом тыка было выяснено что работает след. конструкция:
echo (имя файла для обработки, вводиться при помощи ТАБ дополнения) | iconv -f utf-8 -t koi8-r
на выходе получаем корректное имя файла
соответствующим образом правлю предложеный скрипт, помещаю его а диру с кривыми файлами и запускаю.
mv: cannot move `[здесь еще кривое имя файла] to `': No such file or directory
и так для каждого файла. продиагностировать ошибку затрудняюсь, за незнанием шелла.
удалось нормально примонтировать cd. достаточно было iocharset=utf-8 исправить на koi8-r(дело в том что я переводил систему с юникода на кой). насколько я понял это кодировка в которой символы идут с девайса на консоль. а т.к. на консоли у меня кой, то очевидно. каким волшебным образом они с любого диска выходят в указаной кодировке - хз(а из этих хз потом получаються подводные грабли, ну да ладно).
echo (имя файла для обработки, вводиться при помощи ТАБ дополнения) | iconv -f utf-8 -t koi8-r
на выходе получаем корректное имя файла
соответствующим образом правлю предложеный скрипт, помещаю его а диру с кривыми файлами и запускаю.
mv: cannot move `[здесь еще кривое имя файла] to `': No such file or directory
и так для каждого файла. продиагностировать ошибку затрудняюсь, за незнанием шелла.
удалось нормально примонтировать cd. достаточно было iocharset=utf-8 исправить на koi8-r(дело в том что я переводил систему с юникода на кой). насколько я понял это кодировка в которой символы идут с девайса на консоль. а т.к. на консоли у меня кой, то очевидно. каким волшебным образом они с любого диска выходят в указаной кодировке - хз(а из этих хз потом получаються подводные грабли, ну да ладно).
Да, погнался за читабельностью, потерял переменную
Должно быть так:
Должно быть так:
Код: Выделить всё
for from in *
do
to=`echo $from|iconv -f koi8-r -t utf-8`
[ "$to" = "$from" ] || mv "$from" "$to"
done