Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#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...


== Debian Lenny == {Linux User #422949}

Hors ligne

#4 Le 27/06/2005, à 17:41

meskiangasher

Re : Script de conversion UTF8 sur une arborescence

SkeRoy a écrit :

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 smile


== Debian Lenny == {Linux User #422949}

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...:(


== Debian Lenny == {Linux User #422949}

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 wink
++


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

tigrou a écrit :
#! /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

sad

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

== Debian Lenny == {Linux User #422949}

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 wink

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 smile

Merci de votre réponse.

Dernière modification par asnodj (Le 07/12/2007, à 13:16)

Hors ligne

Haut de page ↑