J'ai un répertoire contenant environ 10 000 fichiers image provenant d'une source externe.
De nombreux noms de fichiers contiennent des espaces et des signes de ponctuation qui ne sont pas compatibles avec les bases de données ou les sites Web. Je veux également ajouter un numéro de SKU à la fin de chaque nom de fichier (à des fins comptables). Beaucoup, sinon la plupart des noms de fichiers contiennent également des caractères latins étendus que je souhaite conserver à des fins de référencement (en particulier pour que les noms de fichiers représentent avec précision le contenu du fichier dans Google Images)
J'ai créé un script bash qui renomme (copie) tous les fichiers selon le résultat souhaité. Le script bash est enregistré en UTF-8. Après l'exécution, il omet environ 500 des fichiers (impossible de stat stat fichier ...).
J'ai exécuté convmv -f UTF-8 -t UTF-8 sur le répertoire et découvert que ces 500 noms de fichiers ne sont pas codés en UTF-8 (convmv est capable de détecter et d'ignorer les noms de fichiers déjà en UTF-8)
Existe-t-il un moyen simple de savoir quelle langue d'encodage ils utilisent actuellement?
La seule façon dont j'ai pu me comprendre est de définir mon codage de terminal sur UTF-8, puis de parcourir tous les codages candidats probables avec convmv jusqu'à ce qu'il affiche un nom converti qui `` semble correct ''. Je n'ai aucun moyen d'être certain que ces 500 fichiers utilisent tous le même encodage, donc je devrais répéter ce processus 500 fois. Je voudrais une méthode plus automatisée que «semble juste» !!!
Vous pouvez trouver cela utile pour tester le répertoire de travail actuel (python 2.7):
Le résultat ressemble à:
Pour extraire le chemin d'accès du répertoire actuel, copiez-collez-le dans un petit script python:
la source