Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script pour renommer les fichiers et dossiers

8 réponses
Avatar
francois.morin7
Voila mon pb :
J'avais un disque qui n'était pas encodé au même format que le reste (c'est
un disque ext3 avec des données qui étaient anciennement sur un disque fat32
d'XP) et du coup, l'affichage des accents et autre "éèàâêûôë...." merdait
complètement j'obtenais des caractère qui n'existent pas.

précision : je suis sous linux ubuntu.

J'ai donc voulu passer tout ça en utf8 avec la commande convmv (trouvé sur
le net) :


Code:
convmv -r -f iso-8859-15 -t utf8 --nosmart --notest ./*
Mais peut être que l'encodage initiale n'était pas iso-8859-15 parce que ça
n'a pas marché.
J'ai donc essayé différents codages mais sans trouver le bon.

Et donc maintenant je me retrouve avec des noms de fichier du type :



Code:
fabien@morinux:~/testRecup/As De TrÚfle/Haut Les Nains$ ls -1
01 - Le r�©veil.mp3
02 - Le g�¢teau.mp3
03 - Chanson d'amur.mp3
04 - Haut les mains.mp3
05 - Les poissons.mp3
06 - J'ai pas vu le temps passer.mp3
07 - Jessica.mp3
08 - Ici paris.mp3
09 - Un deux trois.mp3
10 - He ho p�ªcheur.mp3
11 - Toda la vida.mp3
Et ça m'embête bien parce que du coup AmaroK ne peut plus construire ma
collection (il ne connaît pas ces caractères) et puis j'aimerai bien que
tous mes fichiers retrouvent un nom correct.

J'ai donc eu l'idée de faire un script pour essayer de renommer tout ça puis
que ça obéit à une certaine règle :

Ú = è
é = é
â = â
ê = ê


le résultat du ls (plus haut) diffère si on le cat :


Code:
fabien@morinux:~/testRecup/As De TrÚfle/Haut Les Nains$ ls -1 | cat
01 - Le réveil.mp3
02 - Le gâteau.mp3
03 - Chanson d'amur.mp3
04 - Haut les mains.mp3
05 - Les poissons.mp3
06 - J'ai pas vu le temps passer.mp3
07 - Jessica.mp3
08 - Ici paris.mp3
09 - Un deux trois.mp3
10 - He ho pêcheur.mp3
11 - Toda la vida.mp3
(les deux commandes ne doivent pas utiliser le même format d'encodage, en
tout cas dans nautilus, c'est sous cette forme qu'ils apparaissent)

Et donc, j'ai quelque petites notion de script, mais je ne parviens pas à
faire un script qui me permettrai de renommer tous ces espèce de caractères
bazars en caractères accentués normaux.

Si quelqu'un pouvais m'aider, ça serai vraiment génial. (je précise que je
suis un peut newbie niveau script mais ne demande qu'a apprendre)

8 réponses

Avatar
Stephane Chazelas
2006-10-30, 20:43(+01), francois.morin7:
[...]
Et donc maintenant je me retrouve avec des noms de fichier du type :



Code:
:~/testRecup/As De TrÚfle/Haut Les Nains$ ls -1
01 - Le r�©veil.mp3


Est-ce que tu peux faire un

ls | LC_ALL=C od -tc

et un

locale charmap

--
Stéphane

Avatar
Stephane Chazelas
2006-10-30, 20:43(+01), francois.morin7:
[...]
:~/testRecup/As De TrÚfle/Haut Les Nains$ ls -1
01 - Le r�©veil.mp3


A vue de nez, je dirais que tes noms de fichiers etaient deja en
UTF8 mais que ton terminal support affiche en iso8859-1(5).

Donc, tu devrais faire la convertion inverse utf8->iso8859-15 et
faire en sorte que ton terminal affiche les caracteres UTF8
correctement.

Donc, faire en sorte que "locale charmap" renvoie UTF8
(LC_CTYPE=fr_FR.UTF8 par exemple) et configurer le terminal en
consequence si besoin est, (xterm -u8 par exemple).

--
Stéphane

Avatar
Pascal Bourguignon
"francois.morin7" writes:

Voila mon pb :
J'avais un disque qui n'était pas encodé au même format que le reste (c'est
un disque ext3 avec des données qui étaient anciennement sur un disque fat32
d'XP) et du coup, l'affichage des accents et autre "éèàâêûôë...." merdait
complètement j'obtenais des caractère qui n'existent pas.

précision : je suis sous linux ubuntu.

J'ai donc voulu passer tout ça en utf8 avec la commande convmv (trouvé sur
le net) :
[...]
J'ai donc eu l'idée de faire un script pour essayer de renommer tout ça puis
que ça obéit à une certaine règle :

Ú = è
é = é
â = â
ê = ê


On a l'impression que c'est un double encodage utf-8:

(mapcar (compose de-utf-8 de-utf-8) '("é" "â" "ê"))
--> ("é" "â" "ê")

mais la première séquence a un problème, car Å¡ se décode en 353 ce
qui n'est pas un octet. Peut être un problème de transmission ou
d'encodage au niveau du lecteur de news.


le résultat du ls (plus haut) diffère si on le cat :


Code:
:~/testRecup/As De TrÚfle/Haut Les Nains$ ls -1 | cat
01 - Le réveil.mp3
02 - Le gâteau.mp3
03 - Chanson d'amur.mp3
04 - Haut les mains.mp3
05 - Les poissons.mp3
06 - J'ai pas vu le temps passer.mp3
07 - Jessica.mp3
08 - Ici paris.mp3
09 - Un deux trois.mp3
10 - He ho pêcheur.mp3
11 - Toda la vida.mp3
(les deux commandes ne doivent pas utiliser le même format d'encodage, en
tout cas dans nautilus, c'est sous cette forme qu'ils apparaissent)


Surtout que si tu as un terminal utf-8, quand tu envois une séquence
iso-8859-1 qui correspond à de l'utf-8, le terminal va te le décoder!

Donc, pour vraiment savoir quelles sont les sequences que tu as, il
faut les passer à od -t x1, ou iconv. Par exemple, sur un terminal utf-8:


[ tmp]$ clisp -norc -q -ansi -E utf-8
-x '(open "têsté.dât" :if-does-not-exist :create)'
#<INPUT BUFFERED FILE-STREAM CHARACTER #P"têsté.dât" @1>
[ tmp]$ ls -l t*.d*t
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:10 têsté.dât

On a l'impression d'avoir bien enregistrés les accents, mais en fait
on ne sait rien sur la façon dont ils sont encodés!

[ tmp]$ ls -l t*.d*t|od -t x1
0000000 2d 72 77 2d 72 2d 2d 72 2d 2d 20 20 20 20 31 20
0000020 70 6a 62 20 20 20 20 20 20 70 6a 62 20 20 20 20
0000040 20 20 20 20 20 20 20 20 20 30 20 4f 63 74 20 33
0000060 30 20 32 31 3a 31 30 20 74 c3 aa 73 74 c3 a9 2e
0000100 64 c3 a2 74 0a
0000105
^^^^^__ un â en utf-8 !


[ tmp]$ ls -l t*.d*t|iconv -f iso-8859-1 -t utf-8
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:10 têsté.dât

Et voilà le travail. Si l'encodage du filesystem se veut iso-8859-1 on
a foiré.


Et donc, j'ai quelque petites notion de script, mais je ne parviens pas à
faire un script qui me permettrai de renommer tous ces espèce de caractères
bazars en caractères accentués normaux.

Si quelqu'un pouvais m'aider, ça serai vraiment génial. (je précise que je
suis un peut newbie niveau script mais ne demande qu'a apprendre)


En supposant que c'est les octets que tu as dans ton filesystem,
j'écris un petit script reproduisant tes noms de fichier pour tester.

[ tmp]$ cat make-test
#!/bin/bash
# -*- coding: iso-8859-1 -*-
od -t x1 -a $0
mkdir /tmp/test
cd /tmp/test
touch '01 - Le réveil.mp3'
touch '02 - Le gâteau.mp3'
touch '03 - Chanson d'amur.mp3'
touch '04 - Haut les mains.mp3'
touch '05 - Les poissons.mp3'
touch '06 - J'ai pas vu le temps passer.mp3'
touch '07 - Jessica.mp3'
touch '08 - Ici paris.mp3'
touch '09 - Un deux trois.mp3'
touch '10 - He ho pêcheur.mp3'
touch '11 - Toda la vida.mp3'

[ tmp]$ ./make-test
0000000 23 21 2f 62 69 6e 2f 62 61 73 68 0a 23 20 2d 2a
# ! / b i n / b a s h nl # sp - *
0000020 2d 20 63 6f 64 69 6e 67 3a 20 69 73 6f 2d 38 38
- sp c o d i n g : sp i s o - 8 8
0000040 35 39 2d 31 20 2d 2a 2d 0a 6f 64 20 2d 74 20 78
5 9 - 1 sp - * - nl o d sp - t sp x
0000060 31 20 2d 61 20 24 30 0a 6d 6b 64 69 72 20 2f 74
1 sp - a sp $ 0 nl m k d i r sp / t
0000100 6d 70 2f 74 65 73 74 0a 63 64 20 2f 74 6d 70 2f
m p / t e s t nl c d sp / t m p /
0000120 74 65 73 74 0a 74 6f 75 63 68 20 27 30 31 20 2d
t e s t nl t o u c h sp ' 0 1 sp -
0000140 20 4c 65 20 72 c3 83 c2 a9 76 65 69 6c 2e 6d 70
sp L e sp r C etx B ) v e i l . m p
0000160 33 27 0a 74 6f 75 63 68 20 27 30 32 20 2d 20 4c
3 ' nl t o u c h sp ' 0 2 sp - sp L
0000200 65 20 67 c3 83 c2 a2 74 65 61 75 2e 6d 70 33 27
e sp g C etx B " t e a u . m p 3 '
0000220 0a 74 6f 75 63 68 20 27 30 33 20 2d 20 43 68 61
nl t o u c h sp ' 0 3 sp - sp C h a
0000240 6e 73 6f 6e 20 64 27 61 6d 75 72 2e 6d 70 33 27
n s o n sp d ' a m u r . m p 3 '
0000260 0a 74 6f 75 63 68 20 27 30 34 20 2d 20 48 61 75
nl t o u c h sp ' 0 4 sp - sp H a u
0000300 74 20 6c 65 73 20 6d 61 69 6e 73 2e 6d 70 33 27
t sp l e s sp m a i n s . m p 3 '
0000320 0a 74 6f 75 63 68 20 27 30 35 20 2d 20 4c 65 73
nl t o u c h sp ' 0 5 sp - sp L e s
0000340 20 70 6f 69 73 73 6f 6e 73 2e 6d 70 33 27 0a 74
sp p o i s s o n s . m p 3 ' nl t
0000360 6f 75 63 68 20 27 30 36 20 2d 20 4a 27 61 69 20
o u c h sp ' 0 6 sp - sp J ' a i sp
0000400 70 61 73 20 76 75 20 6c 65 20 74 65 6d 70 73 20
p a s sp v u sp l e sp t e m p s sp
0000420 70 61 73 73 65 72 2e 6d 70 33 27 0a 74 6f 75 63
p a s s e r . m p 3 ' nl t o u c
0000440 68 20 27 30 37 20 2d 20 4a 65 73 73 69 63 61 2e
h sp ' 0 7 sp - sp J e s s i c a .
0000460 6d 70 33 27 0a 74 6f 75 63 68 20 27 30 38 20 2d
m p 3 ' nl t o u c h sp ' 0 8 sp -
0000500 20 49 63 69 20 70 61 72 69 73 2e 6d 70 33 27 0a
sp I c i sp p a r i s . m p 3 ' nl
0000520 74 6f 75 63 68 20 27 30 39 20 2d 20 55 6e 20 64
t o u c h sp ' 0 9 sp - sp U n sp d
0000540 65 75 78 20 74 72 6f 69 73 2e 6d 70 33 27 0a 74
e u x sp t r o i s . m p 3 ' nl t
0000560 6f 75 63 68 20 27 31 30 20 2d 20 48 65 20 68 6f
o u c h sp ' 1 0 sp - sp H e sp h o
0000600 20 70 c3 83 c2 aa 63 68 65 75 72 2e 6d 70 33 27
sp p C etx B * c h e u r . m p 3 '
0000620 0a 74 6f 75 63 68 20 27 31 31 20 2d 20 54 6f 64
nl t o u c h sp ' 1 1 sp - sp T o d
0000640 61 20 6c 61 20 76 69 64 61 2e 6d 70 33 27 0a
a sp l a sp v i d a . m p 3 ' nl
0000657
[ tmp]$ cd test

Voici mon script qui décode utf-8 deux fois:

[ test]$ cat ../de-utf-8
#!/usr/bin/clisp -q -ansi -norc -E iso-8859-1
;; http://clisp.cons.org
;; ftp://ftp.gnu.org/gnu/clisp/release/2.39/clisp-2.39.tar.bz2
(setf custom:*terminal-encoding* charset:utf-8)
(defun de-utf-8 (s)
(ext:convert-string-from-bytes (map 'vector 'char-code s) charset:utf-8))
(dolist (item (directory "*.*"))
(let ((newname (ignore-errors (de-utf-8 (de-utf-8 (file-namestring item))))))
(cond
((equalp newname (file-namestring item)) :do-nothing)
((null newname) (format t "Cannot convert ~S twice~%" item))
(t (format t "Renamed ~{~S~^ ~}~%"
(multiple-value-list
(rename-file item (merge-pathnames newname item))))))))

[ test]$ ../de-utf-8
Renamed #P"/tmp/test/10 - He ho pêcheur.mp3" #P"/tmp/test/10 - He ho pêcheur.mp3" #P"/tmp/test/10 - He ho pêcheur.mp3"
Renamed #P"/tmp/test/02 - Le gâteau.mp3" #P"/tmp/test/02 - Le gâteau.mp3" #P"/tmp/test/02 - Le gâteau.mp3"
Renamed #P"/tmp/test/01 - Le réveil.mp3" #P"/tmp/test/01 - Le réveil.mp3" #P"/tmp/test/01 - Le réveil.mp3"

Bien entendu, si on affiche ces octets iso-8859-x sur un terminal
utf-8, on n'obtient rien de bon:

[ test]$ ls -l
total 108
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 -
drwxr-xr-x 2 pjb pjb 4096 Oct 30 21:27 ./
drwxrwxrwt 53 root root 102400 Oct 30 21:27 ../
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 01 - Le r?veil.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 02 - Le g?teau.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 03 - Chanson damur.mp3?touch 04
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 07 - Jessica.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 08 - Ici paris.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 09 - Un deux trois.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 10 - He ho p?cheur.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 11 - Toda la vida.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Haut
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Jai pas vu le temps passer.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Les
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 les
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 mains.mp3?touch 05
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 poissons.mp3?touch 06

Mais si on les converti pour le terminal:

[ test]$ ls -l|iconv -f iso-8859-1 -t utf-8
total 108
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 -
drwxr-xr-x 2 pjb pjb 4096 Oct 30 21:27 ./
drwxrwxrwt 53 root root 102400 Oct 30 21:27 ../
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 01 - Le réveil.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 02 - Le gâteau.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 03 - Chanson damur.mp3
touch 04
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 07 - Jessica.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 08 - Ici paris.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 09 - Un deux trois.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 10 - He ho pêcheur.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 11 - Toda la vida.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Haut
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Jai pas vu le temps passer.mp3
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 Les
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 les
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 mains.mp3
touch 05
-rw-r--r-- 1 pjb pjb 0 Oct 30 21:27 poissons.mp3
touch 06
[ test]$ ls -1 | od -t x1
0000000 2d 0a 2e 2f 0a 2e 2e 2f 0a 30 31 20 2d 20 4c 65
0000020 20 72 e9 76 65 69 6c 2e 6d 70 33 0a 30 32 20 2d
0000040 20 4c 65 20 67 e2 74 65 61 75 2e 6d 70 33 0a 30
0000060 33 20 2d 20 43 68 61 6e 73 6f 6e 20 64 61 6d 75
0000100 72 2e 6d 70 33 0a 74 6f 75 63 68 20 30 34 0a 30
0000120 37 20 2d 20 4a 65 73 73 69 63 61 2e 6d 70 33 0a
0000140 30 38 20 2d 20 49 63 69 20 70 61 72 69 73 2e 6d
0000160 70 33 0a 30 39 20 2d 20 55 6e 20 64 65 75 78 20
0000200 74 72 6f 69 73 2e 6d 70 33 0a 31 30 20 2d 20 48
0000220 65 20 68 6f 20 70 ea 63 68 65 75 72 2e 6d 70 33 <-- e ho pêcheur
0000240 0a 31 31 20 2d 20 54 6f 64 61 20 6c 61 20 76 69
0000260 64 61 2e 6d 70 33 0a 48 61 75 74 0a 4a 61 69 20
0000300 70 61 73 20 76 75 20 6c 65 20 74 65 6d 70 73 20
0000320 70 61 73 73 65 72 2e 6d 70 33 0a 4c 65 73 0a 6c
0000340 65 73 0a 6d 61 69 6e 73 2e 6d 70 33 0a 74 6f 75
0000360 63 68 20 30 35 0a 70 6f 69 73 73 6f 6e 73 2e 6d
0000400 70 33 0a 74 6f 75 63 68 20 30 36 0a
0000414

on a bien le ê encodé par 0xEA.



--
__Pascal Bourguignon__ http://www.informatimago.com/
You never feed me.
Perhaps I'll sleep on your face.
That will sure show you.

Avatar
Olivier Miakinen
Attention : je suis obligé d'utiliser le jeu de caractères Windows-1252
pour ce message à cause des « ƒ ». J'aurais pu prendre UTF-8, mais je
crois qu'il est un peu plus filtré que les autres.


[...]

J'ai donc voulu passer tout ça en utf8 avec la commande convmv (trouvé sur
le net) :

Code:
convmv -r -f iso-8859-15 -t utf8 --nosmart --notest ./*
Mais peut être que l'encodage initiale n'était pas iso-8859-15 parce que ça
n'a pas marché.
[...]


Ú = è
é = é
â = â
ê = ê


Grâce à <http://www.miakinen.net/vrac/charsets/>, voyons si ce ne serait
pas un double encodage « iso-8859-1[5] -> utf-8 ».

Dans les lignes suivantes, je mets chaque caractère avec à gauche son
code cp1252 (identique au code iso-8859-1 quand il existe, lui-même
identique au code iso-8859-15 la plupart du temps) et à gauche son code
UTF-8.

E8 -> è -> C3 A8
C3 -> Ã -> C3 83
A8 -> ¨ -> C2 A8
83 -> ƒ -> C6 92
C2 -> Â -> C3 82

En résumé :

è -> C3 A8 -> è -> C3 83 C2 A8 -> è

Ça ressemble, mais ce n'est pas tout-à-fait ça. Peut-être parce que
j'aurais dû prendre en compte les différences avec iso-8859-15, mais
c'était un peu trop compliqué de jongler avec les quatre jeux.


Essayons avec le é

é -> C3 A9 -> é -> C3 83 C2 A9 -> é

Oui, là ça marche.


D'où ma question : est-ce que tu n'aurais pas fait la traduction dans
le mauvais sens ? Est-ce que ce ne serait pas de l'utf-8 à traduire en
iso-8859-15 ?

Avatar
Olivier Miakinen

On a l'impression que c'est un double encodage utf-8:


Oui.

mais la première séquence a un problème, car Å¡ se décode en 353 ce
qui n'est pas un octet. Peut être un problème de transmission ou
d'encodage au niveau du lecteur de news.


Après vérification, c'est normal : 353 c'est le s caron (¨) qui est bien
à la position A8 dans ISO-8859-15 (et non pas ISO-8859-1).

Avatar
Fabien MORIN
Est-ce que tu peux faire un

ls | LC_ALL=C od -tc

et un

locale charmap



pour les commandes, voici ce qu'elles retournent :
:~$ ls | LC_ALL=C od -tc
0000000 a s p e l l - f r - 0 . 5 0 - 3
0000020 . t a r . b z 2 n # b a c k u p
0000040 . s h # n b a c k u p . s h n b
0000060 a c k u p . s h ~ n c l e W e p
0000100 n c o n n e r i e s n D e s k t
0000120 o p n e M u l e n e q u a 2 n d
0000140 D e g . c n f o n d s d ' 303 203
0000160 302 251 c r a n n G N U s t e p n g
0000200 r u b F a c n i r i s m e n . j
0000220 p g n j a v a n M a i l n m b o
0000240 x n m e t n m i s s f o n t . l
0000260 o g n m o d e l e s L a t e x n
0000300 m o n B l o g n p o s t p o n e
0000320 d n P r o j e c t s n s c r i p
0000340 t U T F 8 . s h n s o u r c e s
0000360 . l i s t n s o u r i s n t e s
0000400 t l a t e x n t e s t R e c u
0000420 p n t u n n i n g B o o t n u b
0000440 u n t u - 6 . 1 0 - a l t e r n
0000460 a t e - a m d 6 4 . i s o n u b
0000500 u n t u - 6 . 1 0 - a l t e r n
0000520 a t e - i 3 8 6 . i s o n v m w
0000540 a r e n w 3 2 c o d e c s _ 2 0
0000560 0 6 0 6 1 1 - 0 . 0 _ i 3 8 6 .
0000600 d e b n X m o t o n x m o t o .
0000620 x p m n
0000624
:~$ locale charmap
UTF-8



en tout cas, j'ai appliqué le script de Pascal Bourguignon, et je pens e
qu'il à mis le doigt sur le problème.

Voici ce que le script donne lorsque je l'applique au répertoire test
qui contient les mp3 :

:~/testRecup/As De TrÚfle/Haut Les Nai ns$ ls -1
01 - Le r�©veil.mp3
02 - Le g�¢teau.mp3
03 - Chanson d'amur.mp3
04 - Haut les mains.mp3
05 - Les poissons.mp3
06 - J'ai pas vu le temps passer.mp3
07 - Jessica.mp3
08 - Ici paris.mp3
09 - Un deux trois.mp3
10 - He ho p�ªcheur.mp3
11 - Toda la vida.mp3
de-utf-8.sh
:~/testRecup/As De TrÚfle/Haut Les Nai ns
$ ./de-utf-8.sh
Renamed #P"/home/fabien/testRecup/As De TrÃà…¡fle/Haut Les Nains/10
- He ho pêcheur.mp3" #P"/home/fabien/testRecup/As De TràƒÃ‚ƒÃ…¡fle/Haut
Les Nains/10 - He ho pêcheur .mp3" #P"/home/fabien/testRecup/As De
TrÚfle/Haut Les Nains/10 - H e ho pêcheur.mp3"
Renamed #P"/home/fabien/testRecup/As De TrÃà…¡fle/Haut Les Nains/02
- Le gâteau.mp3" #P"/home/fabien/testRecup/As De Trà ƒÅ¡fle/Haut Les
Nains/02 - Le gâteau.mp3" #P "/home/fabien/testRecup/As De
TrÚfle/Haut Les Nains/02 - L e gâteau.mp3"
Renamed #P"/home/fabien/testRecup/As De TrÃà…¡fle/Haut Les Nains/01
- Le réveil.mp3" #P"/home/fabien/testRecup/As De Trà ƒÅ¡fle/Haut Les
Nains/01 - Le réveil.mp3" #P "/home/fabien/testRecup/As De
TrÚfle/Haut Les Nains/01 - L e réveil.mp3"

:~/testRecup/As De TrÚfle/Haut Les Nai ns$ ls -1
01 - Le réveil.mp3
02 - Le gâteau.mp3
03 - Chanson d'amur.mp3
04 - Haut les mains.mp3
05 - Les poissons.mp3
06 - J'ai pas vu le temps passer.mp3
07 - Jessica.mp3
08 - Ici paris.mp3
09 - Un deux trois.mp3
10 - He ho pêcheur.mp3
11 - Toda la vida.mp3
de-utf-8.sh
:~/testRecup/As De TrÚfle/Haut Les Nai ns$


Donc pour le moment, je vais essayer de potasser un peut toutes vos
réponses avant d'appliquer ce script à tout mon disque dur. Il va
sûrement falloir que j'essaye de l'adapter pour qu'il fasse de manià ¨re
récursive tous les noms des fichiers contenus dans les répertoire s, mais
aussi tous les noms de répertoires.

Merci encore pour votre aide !

Avatar
Fabien MORIN
PS : j'ai oublié de précisé, c'est moi qui est à l'orig ine du post,
seulement la première fois je n'étais pas sur mon PC.
Avatar
Fabien MORIN
Donc pour le moment, je vais essayer de potasser un peut toutes vos
réponses avant d'appliquer ce script à tout mon disque dur. Il va
sûrement falloir que j'essaye de l'adapter pour qu'il fasse de mani ère
récursive tous les noms des fichiers contenus dans les répertoi res, mais
aussi tous les noms de répertoires.

Merci encore pour votre aide !



heu... en fait le lisp, je comprend pas entièrement, quelqu'un pourrai s
il m'aider à modifier le script que pascal m'a concocté pour pour qu'il
puisse renommer fichiers et répertoires récursivement ?

voici le script :

#!/usr/bin/clisp -q -ansi -norc -E iso-8859-1
;; http://clisp.cons.org
;; ftp://ftp.gnu.org/gnu/clisp/release/2.39/clisp-2.39.tar.bz2
(setf custom:*terminal-encoding* charset:utf-8)
(defun de-utf-8 (s)
(ext:convert-string-from-bytes (map 'vector 'char-code s)
charset:utf-8))
(dolist (item (directory "*.*"))
(let ((newname (ignore-errors (de-utf-8 (de-utf-8 (file-namestring
item))))))
(cond
((equalp newname (file-namestring item)) :do-nothing)
((null newname) (format t "Cannot convert ~S twice~%" item))
(t (format t "Renamed ~{~S~^ ~}~%"
(multiple-value-list
(rename-file item (merge-pathnames newname
item))))))))


merki