Script bash: exclure le repertoire courant

Résolu
Bonjour,

voilà un petit script qui permet d'automatiser diffèrentes retouches sur des images:

#!/bin/bash
DATA="*.jpg"
for DIR in `find -type d`; do
for FILE in $DIR/$DATA ; do
for i in $FILE ; do

convert -trim $i $i.trim

done
done
done


par contre le défaut, c'est que si je n'ai pas de fichier .jpg dans le repertoire courant, il

convert: unable to open image `./*.jpg': No such file or directory.
convert: missing an image filename `./*.jpg.trim'.


normal car il n'y a de .jpg dans le rep courant, mais comment faire pour ne pas afficher les lignes d'erreurs ? faut il envoyer le resultat dans /dev/null ? mais dans ce cas comment faire ?
Configuration: Linux
Konqueror 3.5

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour, ton script n’est pas correct, si tu as des espaces dans les noms de fichiers, ça ne marchera jamais et ça peut être dangereux, voici ce que je te suggère :

    #!/usr/bin/env bash
    
    find . -iname "*.jpg" | while read i ; do
    
    "$(dirname "$i)" != "." && convert -trim "$i" "$i.trim"
    
    done
    


    PS. excuse le lien, mets entre double crochets ( [[ ) les instructions soulignées.
    1. merci de l'info,

      je testerai avec des noms de ficher contenant des espaces.