У меня есть каталог с ~ 10000 файлов изображений из внешнего источника.
Многие из имен файлов содержат пробелы и знаки препинания, которые не подходят для БД или для Интернета. Я также хочу добавить номер SKU в конце каждого имени файла (для целей бухгалтерского учета). Многие, если не большинство имен файлов также содержат расширенные латинские символы, которые я хочу сохранить для целей SEO (в частности, чтобы имена файлов точно представляли содержимое файла в Google Images)
Я сделал bash-скрипт, который переименовывает (копирует) все файлы до желаемого результата. Скрипт bash сохраняется в UTF-8. После запуска он пропускает около 500 файлов (не в состоянии stat файл ...).
Я запустил в каталоге convmv -f UTF-8 -t UTF-8 и обнаружил, что эти 500 имен файлов не кодируются в UTF-8 (convmv способен обнаруживать и игнорировать имена файлов, уже существующие в UTF-8)
Есть ли простой способ узнать, какую кодировку языка они используют в настоящее время?
Единственный способ, которым я смог сам разобраться, это установить для моего терминального кодирования UTF-8, а затем перебирать все возможные кодировки кандидатов с помощью convmv, пока он не отобразит преобразованное имя, которое «выглядит правильно». У меня нет возможности быть уверенным, что все эти 500 файлов используют одну и ту же кодировку, поэтому мне придется повторить этот процесс 500 раз. Я хотел бы более автоматизированный метод, чем «выглядит правильно» !!!
Это может оказаться полезным для проверки текущего рабочего каталога (python 2.7):
Результат выглядит так:
Чтобы извлечь путь из текущего каталога, скопируйте и вставьте его в небольшой скрипт на python:
источник