Pages : 1
#1 Le 27/06/2005, à 16:27
- meskiangasher
Script de conversion UTF8 sur une arborescence
Bonjour,
Voulant convertir les noms de fichiers d'ISO à UTF8 sur toute une arborescence et ayant lu les différents posts sur ce sujet, j'ai pensé à :
for i in ` find . -name *.pdf`
do
newfilename=`echo $i | iconv -f iso-8859-1 -t utf-8`;
mv "$i" "$newfilename";
done
Seulement il y a dès le départ un problème sur les fichiers dont le nom comporte un espace.
Qu'en pensez-vous ?
Autre question : si je veux faire parcourir tous les fichiers, remplacer *.pdf par * ou *.* (qui sont bien des expressions régulières valides??) ne fonctionne pas, çà affiche :
find: les chemins doivent précéder l'expression
Usage: find [CHEMIN] [EXPRESSION]
Que faire pour y remédier, j'ai beau parcourir la page man de find, je ne trouve pas.
Je vous remercie par avance pour vos lumières.
Dernière modification par meskiangasher (Le 27/06/2005, à 16:33)
Hors ligne
#2 Le 27/06/2005, à 16:36
- szdavid
Re : Script de conversion UTF8 sur une arborescence
pourquoi ne pas faire, au lieu de *.*, tout simplement * ; là (ta méthode) , ça ne prendra pas en compte tes dossiers et tes fichiers n'ayant pas d'extension
Hors ligne
#3 Le 27/06/2005, à 16:55
- SkeRoy
Re : Script de conversion UTF8 sur une arborescence
dans synaptic ce weekend j'ai vu un programme pour la conversion. Je l'ai installé, mais je ne me souviens plus comment il s'appelle sinon...
Hors ligne
#4 Le 27/06/2005, à 17:41
- meskiangasher
Re : Script de conversion UTF8 sur une arborescence
dans synaptic ce weekend j'ai vu un programme pour la conversion. Je l'ai installé, mais je ne me souviens plus comment il s'appelle sinon...
C'est peut-être utf8-migration-tool ?
Hors ligne
#5 Le 27/06/2005, à 18:00
- meskiangasher
Re : Script de conversion UTF8 sur une arborescence
Petite remarque : pour la conversion sur un repertoire seul, le code proposé par sbrunner :
for filename in *
do
newfilename=`echo $filename | iconv -f iso-8859-1 -t utf-8`;
mv "$filename" "$newfilename";
done
convient parfaitement, même pour les fichiers dont le nom comporte des espaces.
C'est donc ce que sort find qui pose problème.
Hors ligne
#6 Le 28/06/2005, à 13:02
- SkeRoy
Re : Script de conversion UTF8 sur une arborescence
meskiangasher> oui ca doit être ca, le nom est assez clair
Hors ligne
#7 Le 06/08/2005, à 12:03
- SkeRoy
Re : Script de conversion UTF8 sur une arborescence
au final ton script il fonctionne? utf8migrationtool ne marche pas chez moi...:(
Hors ligne
#8 Le 06/08/2005, à 12:58
- tigrou
Re : Script de conversion UTF8 sur une arborescence
salut,
pour renommer tous tes .pdf en UTF8 tu peux faire :
IFS='
'
for i in ` find . -name *.pdf`
do
newfilename=`echo "$i" | iconv -f iso-8859-1 -t utf-8`;
mv "$i" "$newfilename";
done
IFS est la variable d'environnement de bash qui lui indique ce qu'il doit considèrer comme des séparateurs, par défaut, espace, retour à la ligne et tabulation. (cf. man bash)
si tu veux renommer tous tes fichiers remplace le find . -name *.pdf par find . -type f
si tu veux tout renommer (fichier et dossier) find . suffira. (cf. man find)
Le problème est que si tu as trop de fichiers, ça pourrait dépasser ce que bash peut traiter. Une solution plus propre et n'ayant pas cet inconvénient est de créer un script s'appelant par exemple utf8_mv contenant :
#! /bin/bash
newfilename=`echo "$1" | iconv -f iso-8859-1 -t utf-8`
mv "$1" "$newfilename"
le rendre éxécutable (chmod +x utf8_mv)
et appeler la commande suivante :
find . -type f -print0 | xargs -0 ./utf8_mv
qui prendre tous tes fichiers, les séparer par le caractère null et les passer un par un au script utf8_mv.
meskiangasher > ta méthode ne traitera que le dossier en cours, pas toute l'arboresence récursivement.
Hors ligne
#9 Le 06/08/2005, à 15:09
- touty
Re : Script de conversion UTF8 sur une arborescence
Voici comment je m'en étais sorti moi à l'époque:
convmv -r --nosmart --notest -f iso-8859-1 -t utf8 *
Une ligne, ça m'a rendu bien service
++
Quelques guides mis à dispo ici http://libre.adok-conception.fr, servez-vous !
Hors ligne
#10 Le 22/01/2006, à 00:35
- severino
Re : Script de conversion UTF8 sur une arborescence
#! /bin/bash newfilename=`echo "$1" | iconv -f iso-8859-1 -t utf-8` mv "$1" "$newfilename"
le rendre éxécutable (chmod +x utf8_mv)
et appeler la commande suivante :find . -type f -print0 | xargs -0 ./utf8_mv
qui prendre tous tes fichiers, les séparer par le caractère null et les passer un par un au script utf8_mv.
xargs: ./utf8_mv: Permission non accordée
Bon j'essaie ça :
sudo apt-get install convmv
et dans le répertoire "Musique"
convmv -r --nosmart --notest -f iso-8859-1 -t utf8 *
Ouah ! Bouclé en 30 secondes !!! [résolu]
Mais dommage ce "permission non accordée", c'était une bonne opportunité de prendre un petit cours de Bash.
Dernière modification par severino (Le 22/01/2006, à 00:39)
Hors ligne
#11 Le 04/03/2007, à 16:46
- Kafi
Re : Script de conversion UTF8 sur une arborescence
Salut,
Bizzare, je pensais être en UTF-8 mais quand j'utilise cette ligne de commande en inversant -t et -f ça marche, sinon (pasage de iso vers utf8) ça me rajoute des caractères bizarres... Comment savoir quel est mon type d'encodage (Sachant que je suis sous EDGY et que cette partition est en reiserfs)??
Merci de votre aide...
Kafi
Dernière modification par Kafi (Le 04/03/2007, à 19:14)
Carnet de voyage en Amérique latine : www.paseolatino.fr
Notre préparation, notre trajet, nos impressions et nos photos.
Hors ligne
#12 Le 04/03/2007, à 21:00
- SkeRoy
Re : Script de conversion UTF8 sur une arborescence
c'est vrai, une lettre accentuée déjà bonne et retransformée une nouvelle fois si on repasse le script dessus.
Du coup faut les refaire en sens inverse avec
-f utf8 -t iso-8859-1
Hors ligne
#13 Le 18/04/2007, à 19:02
- cac
Re : Script de conversion UTF8 sur une arborescence
sinon il suffit d'enlever l'option -nosmart pour pas renommer en utf8 ce qui était déjà dans cet encodage
#14 Le 01/07/2007, à 17:08
- GrInDcOrE
Re : Script de conversion UTF8 sur une arborescence
Bonjour à tous,
un petit ajout pour ceux qui, comme moi, souhaitent aussi convertir les contenus des fichiers en utf-8 (utile pour les passages de projets eclipse de windows vers linux par exemple) :
find . -name "*.html" -exec recode latin1..utf8 {} \;
(trouvé ici https://www.iro.umontreal.ca/support/utf8.shtml)
à lancer dans une arborescence, remplacer *.html par le type de fichier rencontré !
latin1 correspond à iso-8859-1
Hors ligne
#15 Le 07/12/2007, à 13:07
- asnodj
Re : Script de conversion UTF8 sur une arborescence
salut,
J'ai une question !
Comment faire pour convertir SEULEMENT les fichiers qui n'ont pas été convertis auparavant ?
Je m'explique. J'avais déjà converti quelques fichiers par d'autres moyens et quand j'ai utilisé la ligne :
find . -name "*.php" -exec recode latin1..utf8 {} \;
Les fichiers qui étaient déjà en utf8 ont maintenant des caractères bizarres comme "àƒÂ©".
Heureusement qua j'avais une copie
Merci de votre réponse.
Dernière modification par asnodj (Le 07/12/2007, à 13:16)
Hors ligne
Pages : 1