Перейти к содержимому

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

Взято отсюда и подправлено под мой случай.

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

# ls
????1 ????3

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

Устанавливается convmv в Ubuntu командой

$ sudo apt-get install convmv

Если у вас имена файлов в кодировке utf8, то перекодировать их можно так:
convmv -f cp1251 -t utf8 * - выведет список файлов в старой и в новой кодировках:

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

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

convmv -f cp1251 -t utf8 --notest *

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

upd: эта страница хорошо помогает определить в какой кодировке были имена файлов (в моём случае диски были записаны под какой-то древней версией windows и кодировка была cp866)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *