Лучшая практика для замены неизвестных символов из неизвестных кодировок в именах файлов?

То есть у меня есть файл с именем Porträt.pdf.

Но имя файла было создано с помощью наборов символов, которые неправильно отображаются в Ubuntu, как в следующем примере.

введите описание здесь

Какова была бы лучшая практика для переименования таких символов в именах файлов, когда у вас есть несколько имен файлов, и вы не можете использовать этот специальный символ из-за его кодирования в командах терминала?

3 ответа

Теоретически может быть сложно узнать кодировку символов, используемую файлами, но в большинстве случаев ошибка возникает в системах и программах Windows, которые все еще используют только Latin1 вместо UTF-8. Бежать convmv -f cp850 -t utf-8 * без кавычек в папке с битыми файлами и попробуйте.

(Тебе нужно convmv пакет установлен)

Если вы просто хотите избавиться от некоторых персонажей, вы можете попробовать это:

rename "s/[^A-Za-z0-9-_]/_/g"

Это заменило бы каждый символ, который не является только символом, числом или чертой, с подчеркиванием. Беги с -n возможность посмотреть, что происходит в пробном режиме.

Я предполагаю, что современные операционные системы часто выбирают UTF-8 для кодирования имен файлов. В этом смысле это не проблема иметь неамериканские символы в именах файлов. То, что вы испытали, вероятно, является результатом имени файла, который был создан с кодировкой не-UTF-8. Сложно сказать, что вы можете с этим сделать, это также зависит от того, что вы хотите. Если вам нужно правильное имя файла (например, "Porträt.pdf"), вам необходимо сначала узнать кодировку исходного имени файла, а затем преобразовать его / их. Это не так просто "угадать" только потому, что существует огромное количество очень разных кодировок.

Другие вопросы по тегам