Pages : 1
#1 Le 15/01/2011, à 11:16
- loblique
[RESOLU] codage non valide
Bonjour,
Quelques postes on été fait sur le forum présentant des problèmes sur les noms de fichiers ayant subit une transformation sur certains caractères, la plupart du temps sur les caractères spéciaux. Mais je n'ai rien trouvé sur "comment rechercher les noms de fichiers ayant subit cette transformation ?".
Il existe une application (fslint) qui permet de les retrouver. Cepedant, il n'est pas possible de lui associer une action avec convmv.
Aussi, je souhaiterai utiliser la commande "find". Mais je n'ai rien trouvé qui permettait de rechercher ce genre de caractères (un peu différemment présenté dans un terminal).
C'est pourquoi je me rapproche de vous pour avoir votre soutient dans cette démarche de recherche. Comment rechercher avec find, si c'est possible, ce caractère particulier (que je n'arrive pas à copier ici, mais qu'on trouve dans le poste http://forum.ubuntu-fr.org/viewtopic.php?id=234779 ?
Merci,
Dernière modification par loblique (Le 16/01/2011, à 17:44)
Hors ligne
#2 Le 15/01/2011, à 13:05
- d10g3n
Re : [RESOLU] codage non valide
--- EDIT ---
arf: le caractère passe pas...
--------------
Pour find:
find . -name *ton caractère spécial*
Dernière modification par d10g3n (Le 15/01/2011, à 13:08)
Hors ligne
#3 Le 15/01/2011, à 21:14
- loblique
Re : [RESOLU] codage non valide
Merci pour ta réponse,
mais comment fais-tu le caractère suivant que je décris ci dessous : "dans un losange noir se trouve un point d'interrogation".
Il m'est impossible de placer ce caractère dans mon poste, et pourtant il se trouve dans le poste de Thundercat http://forum.ubuntu-fr.org/viewtopic.ph … 0#p1910590.
Donc, si tu arrives à placer ce caractère spécial dans la commande find, je suis preneur.
J'ajouterai que c'est un caractère accentué iso-8859-1 qui ne passe pas en UTF8.
Dernière modification par loblique (Le 15/01/2011, à 21:35)
Hors ligne
#4 Le 16/01/2011, à 00:21
- ehmicky
Re : [RESOLU] codage non valide
Lorsqu'un système UTF-8 comme Ubuntu rencontre des noms de fichiers encodés par exemple en iso-8859-1 via un autre OS, et que ces noms de fichier comportent des caractères non-communs à UTF-8 et iso-8859-1 (c'est-à-dire non ASCII), UTF-8 ne comprend pas ces caractères, qui sont illégaux en UTF-8 (forcément car ils sont en iso-8859-1). Plutôt que de les imprimer, il imprime le caractère Unicode U+fffd : le losange noir avec un ? à l'intérieur.
Donc <?> n'est que le moyen pour un terminal UTF-8 d'imprimer des caractères illégaux, mais ce ne sont pas ces caractères illégaux : en d'autres termes, il est inutile de rechercher le caractère <?> dans des noms de fichier, car tu le trouveras pas.
De plus, ces caractères illégaux font buguer les commandes Unix standards. Par exemple, si tu fais un :
find -name \*
dans un répertoire contenant des fichiers dont le nom est encodé en iso-8859-1, ceux-ci ne sont pas indiqués (alors que cette commande est sensée afficher tous les fichiers) !
Si tu veux rechercher donc les fichiers contenant ces caractères non-encodés en UTF-8 (et affichés <?>), ceci semble étrangement marcher :
find \! -name \*
Et par exemple, pour renommer de tels fichiers récursivement :
while read
do
nouv_nom="${REPLY//[^[:alnum:].~\-~\/]}"
read -p $'Voulez-vous renommer :\n'"$REPLY"$'\nen :\n'"$nouv_nom ? (o/n) " -u3 reponse
[[ $reponse == "o" ]] && mv "$REPLY" "$nouv_nom"
done 3<&0 < <(find \! -name \*)
PS : (Juste au passage, le script indiqué dans le topic que tu as posté comporte plusieurs problèmes et plantera parfois (s'il y a des noms de fichiers avec espace), et ne prendra pas en compte tous les caractères illégaux possibles)
Dernière modification par ehmicky (Le 16/01/2011, à 01:12)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#5 Le 16/01/2011, à 17:13
- loblique
Re : [RESOLU] codage non valide
Merci ehmicky,
ton explication est excellente ! mon problème est résolu.
Bonne journée à toi,
Hors ligne
#6 Le 16/01/2011, à 17:21
- loblique
Re : [RESOLU] codage non valide
J'ajoute cette variante qui peut aussi être intéressante :
find \! -name \* -exec convmv -f iso-8859-15 -t utf8 -r --nosmart --notest '{}' \;
See you soon !
Hors ligne