Je suis un peu dans la panade, car je me retrouve avec le bon vieux
problèmes Samba des noms de fichiers crées par windows et stockés sous unix
(crées par windows en cp1204 ou que sais-je, et stockés par unix en
ISO8859-1)
Bref, je cherche un script qui pourrait me convertir ces noms de fichiers à
la volée (lire : récursivement).
J'ai bien trouvé convmv, mais sur mon freebsd5.1R, je n'ai qu'un perl 5.6,
trop vieux pour ce script.
J'aurais bien aussi mon cerveau, mais je viens de passer trois heures sur
des scripts sh avec des find, des sed, des exec dans tous les sens, et ça
ne veut pas sortir.
Donc, si vous avez une piste, ça me sauverait la vie.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
no
On Fri, 02 Jan 2004 20:08:32 +0000, Nicolas Ecarnot wrote:
Bonsoir,
Je suis un peu dans la panade, car je me retrouve avec le bon vieux problèmes Samba des noms de fichiers crées par windows et stockés sous unix (crées par windows en cp1204 ou que sais-je, et stockés par unix en ISO8859-1)
Bref, je cherche un script qui pourrait me convertir ces noms de fichiers à la volée (lire : récursivement). J'ai bien trouvé convmv, mais sur mon freebsd5.1R, je n'ai qu'un perl 5.6, trop vieux pour ce script. J'aurais bien aussi mon cerveau, mais je viens de passer trois heures sur des scripts sh avec des find, des sed, des exec dans tous les sens, et ça ne veut pas sortir.
Donc, si vous avez une piste, ça me sauverait la vie.
Tu bloques au niveau de la conversion de « charset » ? Est ce que `iconv' existe sur FreeBSD ?
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8 /o)
On Fri, 02 Jan 2004 20:08:32 +0000, Nicolas Ecarnot wrote:
Bonsoir,
Je suis un peu dans la panade, car je me retrouve avec le bon vieux
problèmes Samba des noms de fichiers crées par windows et stockés sous unix
(crées par windows en cp1204 ou que sais-je, et stockés par unix en
ISO8859-1)
Bref, je cherche un script qui pourrait me convertir ces noms de fichiers à
la volée (lire : récursivement).
J'ai bien trouvé convmv, mais sur mon freebsd5.1R, je n'ai qu'un perl 5.6,
trop vieux pour ce script.
J'aurais bien aussi mon cerveau, mais je viens de passer trois heures sur
des scripts sh avec des find, des sed, des exec dans tous les sens, et ça
ne veut pas sortir.
Donc, si vous avez une piste, ça me sauverait la vie.
Tu bloques au niveau de la conversion de « charset » ? Est ce que
`iconv' existe sur FreeBSD ?
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1)
if [ $? -ne 0 ]; then
echo "Conversion impossible ?";
fi;
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8 /o)
On Fri, 02 Jan 2004 20:08:32 +0000, Nicolas Ecarnot wrote:
Bonsoir,
Je suis un peu dans la panade, car je me retrouve avec le bon vieux problèmes Samba des noms de fichiers crées par windows et stockés sous unix (crées par windows en cp1204 ou que sais-je, et stockés par unix en ISO8859-1)
Bref, je cherche un script qui pourrait me convertir ces noms de fichiers à la volée (lire : récursivement). J'ai bien trouvé convmv, mais sur mon freebsd5.1R, je n'ai qu'un perl 5.6, trop vieux pour ce script. J'aurais bien aussi mon cerveau, mais je viens de passer trois heures sur des scripts sh avec des find, des sed, des exec dans tous les sens, et ça ne veut pas sortir.
Donc, si vous avez une piste, ça me sauverait la vie.
Tu bloques au niveau de la conversion de « charset » ? Est ce que `iconv' existe sur FreeBSD ?
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8 /o)
Nicolas Ecarnot
no wrote in news::
Tu bloques au niveau de la conversion de « charset » ? Est ce que `iconv' existe sur FreeBSD ?
Oui :o)
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de bricoler. Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre. Et pour couronner le tout, il faut surtout éviter de convertir deux fois les fichiers accentués mais correctement encodés (ISO-8859-1)
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8 /o)
:o/
-- Nicolas Ecarnot
no <sp@m.net> wrote in news:pan.2004.01.02.20.51.21.751448@m.net:
Tu bloques au niveau de la conversion de « charset » ? Est ce que
`iconv' existe sur FreeBSD ?
Oui :o)
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250
--to-code ISO-8859-1) if [ $? -ne 0 ]; then
echo "Conversion impossible ?";
fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de
bricoler.
Mais le problème est un poil plus compliqué : En effet, il faut fabriquer
un script qui descend dans les répertoires.
Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire
dans lequel il doit descendre.
Et pour couronner le tout, il faut surtout éviter de convertir deux fois
les fichiers accentués mais correctement encodés (ISO-8859-1)
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8
/o)
Tu bloques au niveau de la conversion de « charset » ? Est ce que `iconv' existe sur FreeBSD ?
Oui :o)
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de bricoler. Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre. Et pour couronner le tout, il faut surtout éviter de convertir deux fois les fichiers accentués mais correctement encodés (ISO-8859-1)
(Sinon, 3 heures ça doit être suffisant pour installer un Perl-5.8 /o)
:o/
-- Nicolas Ecarnot
DINH Viêt Hoà
Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre.
et "find" ?
-- DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
Mais le problème est un poil plus compliqué : En effet, il faut fabriquer
un script qui descend dans les répertoires.
Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire
dans lequel il doit descendre.
et "find" ?
--
DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre.
et "find" ?
-- DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
Etienne PIERRE
Nicolas Ecarnot wrote:
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de bricoler. Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre. Et pour couronner le tout, il faut surtout éviter de convertir deux fois les fichiers accentués mais correctement encodés (ISO-8859-1)
Avec les options -maxdepth et -mindepth de find, genre :
found=yes depth=1 while [ $found = "yes" ] do found=no find /quelque/part -mindepth $depth -maxdepth $depth | while read file do found=yes newfile=$(echo "$file" | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1)
if [ $? -eq 0 ]; then mv "$file" "$newfile" else echo "Conversion de $file impossible" fi done let depth=$depth+1 done
C'est un petit script que je n'ai pas du tout testé, mais je suppose que ça doit marcher. A tester avant d'utiliser.
Etienne
Nicolas Ecarnot wrote:
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250
--to-code ISO-8859-1) if [ $? -ne 0 ]; then
echo "Conversion impossible ?";
fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de
bricoler.
Mais le problème est un poil plus compliqué : En effet, il faut fabriquer
un script qui descend dans les répertoires.
Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire
dans lequel il doit descendre.
Et pour couronner le tout, il faut surtout éviter de convertir deux fois
les fichiers accentués mais correctement encodés (ISO-8859-1)
Avec les options -maxdepth et -mindepth de find, genre :
found=yes
depth=1
while [ $found = "yes" ]
do
found=no
find /quelque/part -mindepth $depth -maxdepth $depth
| while read file
do
found=yes
newfile=$(echo "$file" |
iconv --from-code WINDOWS-1250
--to-code ISO-8859-1)
if [ $? -eq 0 ]; then
mv "$file" "$newfile"
else
echo "Conversion de $file impossible"
fi
done
let depth=$depth+1
done
C'est un petit script que je n'ai pas du tout testé, mais je suppose que
ça doit marcher. A tester avant d'utiliser.
ISO_FNAME=$(echo $WINDOWS_FNAME | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1) if [ $? -ne 0 ]; then echo "Conversion impossible ?"; fi;
Ok, merci. C'est un peu ce genre de script que je suis en train de bricoler. Mais le problème est un poil plus compliqué : En effet, il faut fabriquer un script qui descend dans les répertoires. Or, il ne peut pas descendre avant d'avoir converti le nom du répertoire dans lequel il doit descendre. Et pour couronner le tout, il faut surtout éviter de convertir deux fois les fichiers accentués mais correctement encodés (ISO-8859-1)
Avec les options -maxdepth et -mindepth de find, genre :
found=yes depth=1 while [ $found = "yes" ] do found=no find /quelque/part -mindepth $depth -maxdepth $depth | while read file do found=yes newfile=$(echo "$file" | iconv --from-code WINDOWS-1250 --to-code ISO-8859-1)
if [ $? -eq 0 ]; then mv "$file" "$newfile" else echo "Conversion de $file impossible" fi done let depth=$depth+1 done
C'est un petit script que je n'ai pas du tout testé, mais je suppose que ça doit marcher. A tester avant d'utiliser.
Etienne
Nicolas Ecarnot
Bon ben désolé et merci à ceux qui ont répondu. J'ai fini par me faire une série de petits scripts semi-automatique, en partie par shell, en partie par des scripts vi (c'est quand même idéniablement le meilleur éditeur de texte qui ait été écrit, nul n'oserait en douter.)
Donc merci beaucoup pour ce soutien psychologique, mes 40100 fichiers sont a présent converti et la joie règne dans mes pantoufles.
Bonne année, et bon courage aux sysadmin :o)
-- Nicolas Ecarnot
Bon ben désolé et merci à ceux qui ont répondu.
J'ai fini par me faire une série de petits scripts semi-automatique, en
partie par shell, en partie par des scripts vi (c'est quand même
idéniablement le meilleur éditeur de texte qui ait été écrit, nul n'oserait
en douter.)
Donc merci beaucoup pour ce soutien psychologique, mes 40100 fichiers sont
a présent converti et la joie règne dans mes pantoufles.
Bon ben désolé et merci à ceux qui ont répondu. J'ai fini par me faire une série de petits scripts semi-automatique, en partie par shell, en partie par des scripts vi (c'est quand même idéniablement le meilleur éditeur de texte qui ait été écrit, nul n'oserait en douter.)
Donc merci beaucoup pour ce soutien psychologique, mes 40100 fichiers sont a présent converti et la joie règne dans mes pantoufles.