1/05/2009

Преобразование кодировки имени файла

Часто бывает, что в системе остаются такие артефакты, как файлы,
имя которых записано в кодировке koi8-r или cp1251.
Обычно такое случается, когда раздел или устройство с которого были скопированы файлы, были смонтированы без указания кодировки, или с указанием неверной кодировки.
Выглядит все это вот так:
# ls
????1 ????3

Чтобы легко и просто переделать имя файла в читабельный вид, можно воспользоваться утилитой convmv.
Если у вас имена файлов в кодировке koi8-r, то перекодировать их можно так:
convmv -t koi8-r -f utf8 * - выведет список файлов в старой и в новой кодировках:

# convmv -f koi8-r -t utf8 *
Starting a dry run without changes...
mv "./����1" "./Файл1"
mv "./����3" "./Файл3"

И если вас это устраивает, добавляем опцию --notest и программа уже реально переименует файлы:

convmv -f koi8-r -t utf8 --notest *

Convmv поддерживает также кучу дополнительных полезных опций:
--list Покажет список поддерживаемых кодировок.
-r Рекурсивно обойти каталоги.
-i Спрашивать о каждом действии (интерактивный режим).
--lower Переделывает имя файла в нижний регистр

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