Eu tenho um diretório com ~ 10.000 arquivos de imagem de uma fonte externa.
Muitos dos nomes de arquivos contêm espaços e sinais de pontuação que não são compatíveis com DB ou Web. Também quero acrescentar um número de SKU ao final de cada nome de arquivo (para fins de contabilidade). Muitos, se não a maioria dos nomes de arquivos, também contêm caracteres latinos estendidos que eu quero manter para fins de SEO (especificamente para que os nomes de arquivos representem com precisão o conteúdo do arquivo nas Imagens do Google)
Eu criei um script bash que renomeia (copia) todos os arquivos para o resultado desejado. O script bash é salvo em UTF-8. Após a execução, ele omite aproximadamente 500 dos arquivos (não é possível o arquivo stat ...).
Eu tenho que correr convmv -f UTF-8 -t UTF-8 no diretório, e descobriu estes 500 nomes de arquivos são não codificados em UTF-8 (convmv é capaz de detectar e ignorar nomes já em UTF-8)
Existe uma maneira fácil de descobrir qual codificação de idioma eles estão usando atualmente?
A única maneira de descobrir a mim mesmo é definindo minha codificação de terminal para UTF-8 e, em seguida, iterando todas as prováveis codificações candidatas com convmv até exibir um nome convertido que 'parece certo'. Não tenho como ter certeza de que esses 500 arquivos usam a mesma codificação, portanto, eu precisaria repetir esse processo 500 vezes. Gostaria de um método mais automatizado do que 'parece certo' !!!
Você pode achar isso útil para testar o diretório de trabalho atual (python 2.7):
O resultado parece:
Para percorrer o caminho do diretório atual, recorte e cole isso em um pequeno script python:
fonte