renommer

renommer - Shell/Batch - Programmation

Marsh Posté le 16-05-2006 à 14:36:40    

Code :
  1. #!/bin/bash
  2. #---------------------------------
  3. #*** Modification de format PNG ***
  4. #---------------------------------
  5. mogrify -format jpg *.png
  6. #--------------------------------------------------
  7. #*** Renommer par lot les accents et les blancs ***
  8. #--------------------------------------------------
  9. for i in * ; do
  10.     nom=`echo $i | sed -e s/\ /\_/g |
  11. sed -e s/\à/\a/g |
  12. sed -e s/\ç/\ç/g |
  13. sed -e s/\é/\e/g |
  14. sed -e s/\é/\e/g |
  15. sed -e s/\è/\e/g |
  16. sed -e s/\ê/\e/g |
  17. sed -e s/\ë/\e/g |
  18. sed -e s/\î/\i/g |
  19. sed -e s/\ï/\i/g |
  20. sed -e s/\ô/\o/g |
  21. sed -e s/\ö/\o/g |
  22. sed -e s/\ù/\u/g |
  23. sed -e s/\ü/\u/g |
  24. sed -e s/\ /\_/g`
  25. mv "$i" "$nom"
  26. done
  27. #---------------------------------
  28. #*** Effacement des fichiers PNG ***
  29. #---------------------------------
  30. for i in `ls *.png`
  31. do
  32. rm $i
  33. done
  34. #---------------------------------
  35. #*** Conversion par lot Dimension-max : 1600x1200 de toutes les images en jpeg ***
  36. #---------------------------------
  37. mogrify -resize 1600x1200 *.jpg
  38. #-------------------------------------------------------------
  39. #*** rajout d'un préfix de toutes les images en jpeg ***
  40. #-------------------------------------------------------------
  41. IMAGES_PREFIX="Mon_Pref-"
  42. for i in `ls *.jpg`
  43. do
  44.         FILENAME=`basename $i`
  45.         echo "rajout d'un préfix à" $FILENAME
  46.         rename  $FILENAME $IMAGES_PREFIX$FILENAME
  47. done

On me dit :

 

...
rajout d'un préfix à a_d_0.jpg
Bareword "a_d_0" not allowed while "strict subs" in use at (eval 1) line 1.


Que faut-il modifier ?

 

D'avance merci !


---------------
Sur UBUNTU
Reply

Marsh Posté le 16-05-2006 à 14:36:40   

Reply

Marsh Posté le 18-05-2006 à 19:39:23    

isaric a écrit :

Code :
  1. for i in * ; do
  2.     nom=`echo $i | sed -e s/\ /\_/g |
  3. sed -e s/\à/\a/g |
  4. sed -e s/\ç/\ç/g |
  5. sed -e s/\é/\e/g |
  6. sed -e s/\é/\e/g |
  7. sed -e s/\è/\e/g |
  8. sed -e s/\ê/\e/g |
  9. sed -e s/\ë/\e/g |
  10. sed -e s/\î/\i/g |
  11. sed -e s/\ï/\i/g |
  12. sed -e s/\ô/\o/g |
  13. sed -e s/\ö/\o/g |
  14. sed -e s/\ù/\u/g |
  15. sed -e s/\ü/\u/g |
  16. sed -e s/\ /\_/g`
  17. mv "$i" "$nom"
  18. done



Personnellement j'ai toujours eu l'habitude d'encadrer mes ordres sed avec des guillemets
Au lieu de

sed -e s/î/i/g


Je mets

sed -e "s/î/i/g"


 
Par ailleurs, sed accepte plusieurs ordres
Au lieu de

sed -e truc1 |sed -e truc2


On peut écrire

sed -e truc1 -e truc2


 

isaric a écrit :

Code :
  1. #---------------------------------
  2. #*** Effacement des fichiers PNG ***
  3. #---------------------------------
  4. for i in `ls *.png`
  5. do
  6. rm $i
  7. done



Tu peux écrire directement "rm *.png" et même mettre "rm -f"...
 

isaric a écrit :

Code :
  1. rename  $FILENAME $IMAGES_PREFIX$FILENAME



Je ne connais pas "rename". En revanche je connais "mv".
 
Sinon je ne vois pas ce qui cloche dans ton script (mais je ne connais pas la commande "mogrify" )...


Message édité par Sve@r le 18-05-2006 à 19:43:11

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed