Question de script

Bonjour,
j'utilise un script pour envoyer des fichiers sur un blog posterous par courriel.
Voici le script :
for i in *; do echo "$i"|mutt -s "$i" -a "$i" post@posterous.com; done


J'aimerais si vous pouviez m'aider à effectuer deux choses.
J'aimerais qu'entre chaque envois de fichier il y est une minutes de temps
Ensuite, j'aimerais être capable d'envoyer par exemple les fichiers par groupe de 20 ou du nombre que je veux.
Merci pour votre aide

8 réponses

  1. Contributeur
    hello
    sleep 60 pour attendre 1 minute
    les 20 fichiers, en 1 pièce-jointe ou en 20 pj ?
    1. Contributeur
      essaye ce script
      #!/bin/sh
      
      TAILLE=20971520
      ls -l|awk -v taille=$TAILLE '/^-/ {if(tot+$5 > taille){tot=0;print fic;fic=""};tot+=$5;fic=fic " -a " $NF};END{print fic}'|while read F ; do
              LISTE=$(echo "$F"|sed -e 's/-a / /g')
              SUBJ=$(echo $LISTE|awk '{print $1,"à",$NF}')
              echo "fichiers: $LISTE" | mutt -s "fichiers $SUBJ" $F post@posterous.com
      done
      
      1. Contributeur
        quel shell utilises-tu ? exécuter
        echo $SHELL
        quels shells existent ?, exécuter
        ls -l /bin/*sh*
        pour la taille, je ne sais pas si mutt compresse, alors on peut calculer la taille des fichiers plutot que des pieces-jointes
        1. Deuxième question, est-ce que vous pensez qu'il serait possible d'affiner ce script pour qu'a lieu d'un nombre de fichier, il prenne un nombre de pièce jointe jusqu'à temps qu'il atteigne un maximum par exemple de 20 mb. Je pose seulement la question...
          1. Merci pour ce script il est vraiment très bien.
            Je l'ai exécuté avec la commande bash + nom du script.
            Car c'est bizzare sur mon installation de pubuntu je ne trouve pas le répertoire /bin/bash...
            est-ce qu'il faut que je le créé. Je suis débutant dans tout cela...
            Merci beaucoup
            1. Contributeur
              ce script envoie les fichiers par groupe de N pièces-jointes
              $ ls
              f01  f03  f05  f07  f09  f11  f13  f15	f17  f19  f21  f23  f25  f27  f29  f31	f33
              f02  f04  f06  f08  f10  f12  f14  f16	f18  f20  f22  f24  f26  f28  f30  f32
              $ 
              $ ../f1
              echo " f01 f02 f03 f04 f05" | mutt -s "fichiers 1 a 5"  -a f01 -a f02 -a f03 -a f04 -a f05 post@posterous.com
              echo " f06 f07 f08 f09 f10" | mutt -s "fichiers 6 a 10"  -a f06 -a f07 -a f08 -a f09 -a f10 post@posterous.com
              echo " f11 f12 f13 f14 f15" | mutt -s "fichiers 11 a 15"  -a f11 -a f12 -a f13 -a f14 -a f15 post@posterous.com
              echo " f16 f17 f18 f19 f20" | mutt -s "fichiers 16 a 20"  -a f16 -a f17 -a f18 -a f19 -a f20 post@posterous.com
              echo " f21 f22 f23 f24 f25" | mutt -s "fichiers 21 a 25"  -a f21 -a f22 -a f23 -a f24 -a f25 post@posterous.com
              echo " f26 f27 f28 f29 f30" | mutt -s "fichiers 26 a 30"  -a f26 -a f27 -a f28 -a f29 -a f30 post@posterous.com
              echo " f31 f32 f33" | mutt -s "fichiers 31 a 33"  -a f31 -a f32 -a f33 post@posterous.com
              $ 
              $ cat ../f1
              #!/bin/bash
              
              N=5
              X=1 ; PJ="" ; LISTE="" ; FN=$X
              for FILE in * ; do
                      PJ="$PJ -a $FILE" ; LISTE="$LISTE $FILE" 
                      if [ $((X++ % $N)) -eq 0 ] ; then
                              echo "$LISTE" | mutt -s "fichiers $FN a $((X-1))" $PJ post@posterous.com
                              PJ="" ; LISTE="" ; FN=$X
                      fi
              done
              if [ -n "$PJ" ] ; then
                      echo "$LISTE" | mutt -s "fichiers $FN a $((X-1))" $PJ post@posterous.com
              fi
              
              1. Merci beaucoup pour le Sleep 60 c'est très gentil.
                Dans le fond c'est d'envoyer 1 courriel avec 20 pièce jointes.
                Ensuite répéter avec 20 autres fichiers.