Лучшая практика для замены неизвестных символов из неизвестных кодировок в именах файлов?
То есть у меня есть файл с именем 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"), вам необходимо сначала узнать кодировку исходного имени файла, а затем преобразовать его / их. Это не так просто "угадать" только потому, что существует огромное количество очень разных кодировок.