Script bash: exclure le repertoire courant

Résolu
snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    convert -trim $i $i.trim 2>/dev/null
    0
  2. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    merci bien.

    ==> résolu
    0
  3. (Pabix) Messages postés 600 Statut Membre 81
     
    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.
    0
  4. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    merci de l'info,

    je testerai avec des noms de ficher contenant des espaces.
    0