Forum Programmation.shell Renommer les fichiers avec des accents dans script sh

Posté par  .
Étiquettes : aucune
0
15
nov.
2006
Bonjour à tous,

Je dois écrire un script sh, qui me permette de renommer des fichiers dans une arborescence.

Retouver les fichiers ne me pose pas de problème, par contre je n'arrive pas à renommer les fichiers qui comportent des des accents.
J'ai fait des tests avec la commande tr mais ça ne fonctionne pas.


#! /bin/sh

PREP=/Users/jipi/Desktop/test_copie_theta/Prep

AS=/Users/jipi/Desktop/test_copie_theta/AutoSpooling

cd $PREP

for DOSSIER in `find . -name '[!.]*' -name '[!Network]*' -name '[!Temporary]*' -maxdepth 1`

do

#echo $DOSSIER
cd $PREP/$DOSSIER

for FICHIER in `find . -type f -name '*.tif' -o -name '*.jpg' -o -name '*.JPG' -maxdepth 1`
do

echo `basename $FICHIER`
echo `basename $FICHIER` >> $PREP/fichiers.txt

#nouveaunom=`echo $fic | tr 'àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ ' 'aceeeeiioouuACEEEEIIOOUU_'`
echo `$FICHIER | tr "ÃÄ" "#"`
#mv $fichier `echo $fichier | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"`
#echo $nouveaunom

done

done


Auriez-vous une idée ??

Merci

JPA
  • # rename

    Posté par  (site web personnel) . Évalué à 1.

    Salut.
    Pourquoi ne pas utiliser rename, tout simplement ? Je ne sais plus s'il gère les parcours récursifs par contre...

    En fait je n'ai pas très bien compris le but de ton appli. D'après le code, il s'agit d'enlever les accents dans les noms des fichiers, c'est bien ça ?

    Trucs en vrac :

    1/ echo `$FICHIER | tr "ÃÄ" "#"` : je ne vois pas ce que ça vient faire là. Tu cherches à exécuter le fichier ? Si oui, le echo est inutile. Sinon, enève les accents graves.

    2/ mv $fichier `echo $fichier | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` : c'est normal que $fichier soit en minuscule alors qu'avant tu écris $FICHIER ?

    3/ Je te conseille de toujours protéger tes variables par des guillemets, surtout que vu le code elles peuvent contenir des espaces. Donc écrire mv "$fichier" `echo "$fichier" | tr [...]` et pas mv $fichier `echo $fichier | tr [...]`.

    4/ Plutôt que de faire un for, je te conseille d'utiliser l'option -exec de find. Explications ici : http://mouchevii.free.fr/wiki/index.php?title=Recherche_de_f(...) . Il faudra peut-être chercher un peu pour que ça marche, je ne sais pas trop ce que ça donne avec les tubes.

    Bon voilà, à part le point 2, je ne vois a priori pas de raison pour que ça ne marche pas...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.