понедельник, 6 июня 2011 г.

Как изменить кодировку имён файлов

Работая с коллегами, пользующимися альтернативными операционными системами, :) временами приходится иметь дело с файлами, имена которых повредились после передачи через Сеть. Моя Debian-система работает на LANG=ru_RU.UTF-8, так что самая частая головная боль — это кодировка cp1251, тяжёлое наследие Windows98 в России.

К моему личному великому удовольствию, в Debian присутствует утилита, которая позволяет изменить кодировку имён файлов, которые уже лежат на вашем жёстком диске. Она называется convmv.

Дополнительно, бывает проблема получить читаемый список файлов на FTP-ресурсах, где выставлена кодировка, отличающаяся от UTF-8. Для Krusader, которым я пользуюсь в качестве FTP-менеджера по умолчанию, всё решается элементарным пунктом меню «Вид» -> «Выбрать кодировку».


convmv to the rescue

Присутствует в репозитариях для squeeze:

# aptitude install convmv

Выполняется достаточно удобно, но, по-моему, контринтуитивно. Удобнее всего все файлы с повреждёнными именами тем или иным образом собрать в одном каталоге и из этого каталога вызвать convmv следующим образом:

$ convmv -f cp1251 -t UTF-8 *

В случае, если файлы повредились насмерть, то звёздочка может оказаться единственным выходом.

По умолчанию convmv не меняет имена файлов после своего запуска — только пишет результат, который получится при заданных настройках. Как и всегда с кодировками, надо тыкать почти наугад, пока на экране не появится что-то читаемое. :) Для того, чтобы изменение произошло, convmv надо будет запустить ещё раз с флагом --notest:

$ convmv --notest -f cp1251 -t UTF-8 *

При общении с Windows-системами в России самые частые кодировки, которые будут попадаться, это cp1251, cp866 и koi8-r.

1 комментарий: