Изменение кодировки имени файла с помощью convmv

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

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

Установка:

apt install convmv

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

В общем случае команда выглядит так:

convmv -f исходная_кодировка -t конечная_кодировка -r *

где:

    -f исходная_кодировка - (f от from) указывает, в какой сейчас кодировке находятся названия файлов;
    -t конечная_кодировка - (t от to) указывает, в какую кодировку нужно перевести названия файлов;
    -r - (recursion) говорит, что необходимо применить эти параметры ко всем вложенным папкам;
    * - показывает, к каким файлам необходимо применить указанные параметры (* - ко всем)

Если все правильно, выполнить реальное переименование можно, добавив ключ --notest:

convmv -f исходная_кодировка -t конечная_кодировка -r --notest *