Однажды возникла необходимость перенсти сайт, где было загружено много изображений с кириллическими именами. После упаковки этого хозяйства в архив и распаковки на новом сервере оказалось, что имена файлов превратились в крякозяблики.
Решить проблему помогла утилита convmv.
Установка:
apt install convmv
Теперь можно перейти в каталог с проблемными файлами. По умолчанию утилита работает в тестовом режиме, т.е., она только покажет результат перекодировки, не переименовывая сами файлы. Это очень правильное решение, потому что не всегда с первого раза получается правильно угадать исходную кодировку.
В общем случае команда выглядит так:
convmv -f исходная_кодировка -t конечная_кодировка -r *
где:
-f исходная_кодировка - (f от from) указывает, в какой сейчас кодировке находятся названия файлов;
-t конечная_кодировка - (t от to) указывает, в какую кодировку нужно перевести названия файлов;
-r - (recursion) говорит, что необходимо применить эти параметры ко всем вложенным папкам;
* - показывает, к каким файлам необходимо применить указанные параметры (* - ко всем)
Если все правильно, выполнить реальное переименование можно, добавив ключ --notest:
convmv -f исходная_кодировка -t конечная_кодировка -r --notest *