[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux] transformation de noms de fichiers
--- Pascal Bleser <pascal.bleser@atosorigin.com> a
écrit :
> ...
> > Je sais comment faire pour é->e, mais pas pour
> :8e->e
> >
> > Des idées ? des pistes ?
> > (il y a d'autres conversions à faire, style
> :94->î,
> > mais si je sais faire le première, les autres ne
> me
> > poseront pas de problème)
>
> #!/usr/bin/perl
>
> %map = (
> ":94" => "î",
> ":8e" => "è"
> );
>
> foreach $file (@ARGV) {
> $changed=undef;
> $file_orig=$file;
> while (($k, $v) = each(%map)) {
> if ($file =~ /$k/) {
> $file=~s/$k/$v/g;
> $changed=1;
> }
> }
> rename($file_orig, $file) $if ($changed);
> }
>
> -> à sauver et rendre éxécutable
>
> Ensuite, donne-lui les noms de fichiers en
> paramètre(s), p.ex. comme ceci:
>
> my_rename *
>
> ou
>
> my_rename $(find . -type d)
Merci beaucoup (j'ai changé $if par if sinon ça
marchait pas :-)
Mais ça ne fonctionne pas si le nom de fichier
contient un espace. Et je n'arrive pas à les échapper,
ou à indiquer à perl que c'est un seul nom de fichier
et non 2.
Exemple : je crée les répertoires suivants :
~/test
~/test/esp ace
Dans ce dernier je place le fichier essai:8e qui doit
être remplacé par essaié.
Si j'exécute le script de ~/test, ça ne marche pas.
J'ai essayé plusieurs possibilités avec find qui me
donnent bien le nom de fichier en ligne de commande
(avec les répertoires devant, depuis ~/test ou depuis
la racine, quotés ou pas,...), mais qui ne donnent
aucun résultat une fois données en argument au script.
Help!
A+,
--
Rémi
___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Courrier : http://courrier.yahoo.fr
[ Soyez précis dans vos sujets svp afin de déterminer directement ]
[ le type de demande... ]
[ Pour vous (dés)inscrire, aller sur http://unixtech.be/ml.php ]
[ Archives de la mailing list: http://archives.unixtech.be/linux/ ]
[ http://unixtech.be Contact: listmaster@unixtech.be ]