[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  ]