IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

bash date composite


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut bash date composite
    bonjour a tous

    j'essaye de faire un script bash qui retrouve la date dans les fichiers 1321520110201test.png
    et détermine la date de la semaine ex:

    1321520110201test.png 200110201 donc lundi donc tous les lundi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for dat in $destt$c01$o/*.$ext1
       if lundi 
       then composite -compose Over "$imagelundi" "$dat" "$ldat"
       if mardi
       then composite -compose Over "$imagemardi" "$dat" "$dat"
       if mercredi 
       then composite -compose Over "$imagemercredi" "$dat" "$dat"
    fi
     
    done
    merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    regarde la page man de bash, à Remplacement des paramètres, pour ne retrouver que la date dans le nom du fichier courant.
    est-ce toujours : 5chiffres, la date(8 chiffres, donc), etc ?

    et, date --help, ou man date.

    tu devrais peut-être envisager d'utiliser case

    Comment est-ce que tu trouves $imagelundi ? ou est-ce justement ce que tu cherches ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    $imagelundi correspond à imagelundi="/test/image/lundi.png"

    c'est l'image qui vas être intégrées au autres dons la date correspond au jour de la semaine lundi

    les fichiers reste toujours de la même longueurs

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    imagelundi="/test/image/lundi.png"
     
    imgD="image$(date +%A)"
     
    for image in $destt$c01$o/*.$ext1
    do if [ "$(date -d"$image:5:8}" +%A)" = "$(date +%A)" ]
       then composite -compose Over "${!imgD}" "$image" "$image"
       fi
    done
    ${!imgD} est une indirection.

    à lancer tous les jours, avec une cuillérée de man bash
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    je teste ca!

    dit moi quand tu utilise $ à la fin du mot tu crée une variable pour la variable image ?

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    dans ton bash imagelundi="/test/image/lundi.png"

    ou apparait t"elle plus loin ?


    la ? then composite -compose Over $imagelundi "${!imgD}" "$image"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    imagelundi="/test/image/lundi.png"
     
    imgD="image$(date +%A)"
     
    for image in $destt$c01$o/*.$ext1
    do if [ "$(date -d"$image:5:8}" +%A)" = "$(date +%A)" ]
       then composite -compose Over $imagelundi "${!imgD}" "$image"
       fi
    done

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    j'ai besoin de plus d'information concernant ce bash car je ne comprend pas comment il interprette lundi mardi mercredi jeudi vendredi samedi dimanche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
     
    imagelundi="/test/image/lundi.png"
    imagemardi="/test/image/mardi.png"
    imagemercredi="/test/image/mercredi.png"
    imagejeudi="/test/image/jeudi.png"
    imagevendredi="/test/image/vendredi.png
    imagesamedi="/test/image/samedi.png
    imagedimanche="/test/image/dimanche.png
     
    imgD="image$(date +%A)"
     
    for image in $destt$c01$o/*.$ext1
    do if [ "$(date -d"$image:5:8}" +%A)" = "$(date +%A)" ]
       then composite -compose Over "${!imgD}" "$image" "$image"
       fi
    done

    en sachant que mes fichiers date de 2006 2010 2011 etc .

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par cyberrage01
    je ne comprend pas comment il interprette lundi mardi mercredi jeudi vendredi samedi dimanche
    c'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -d"${image:5:8}" +%A
    oups, j'avais oublié une accolade
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Un grand merci .

    Grâce à toi j'ai pus le faire, j'ai galéré pendant un mois gros merci j'espère m'améliorer.

    Voici mon script bash terminé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #!/bin/bash
     
    ba="/mnt/Test/"
    destt="/Test/Image/Photo/"
    o="/Original"
    ext1="jpg"
    ext2="png"
    ext3="bmb"
     
     
    #NOM DES PHOTOS
     
    c01=ALBUM35
     
    rm -r $destt$c01 
     
    cp -r $ba$c01 $destt$c01
     
     
    #!/bin/bash
     
    imagelundi="/Test/Drapeau/J/LUN.png"
    imagemardi="/Test/Drapeau/J/MAR.png"
    imagemercredi="/Test/Drapeau/J/MER.png"
    imagejeudi="/Test/Drapeau/J/JEU.png"
    imagevendredi="/Test/Drapeau/J/VEN.png"
    imagesamedi="/Test/Drapeau/J/SAM.png"
    imagedimanche="/Test/Drapeau/J/DIM.png"
     
    imgD1="image1$(date +%A)"
    imgD2="image2$(date +%A)"
    imgD3="image3$(date +%A)"
    imgD4="image4$(date +%A)"
    imgD5="image5$(date +%A)"
    imgD6="image6$(date +%A)"
    imgD7="image7$(date +%A)"
     
    for image1 in $destt$c01$o/*.$ext1
       do filename1="${image1##*/}"	
       if [ "$(date -d"${filename1:10:8}" +%A)" = "lundi" ]
       then composite -compose Over "$imagelundi" "$image1" "$image1"
       fi
    done
     
    for image2 in $destt$c01$o/*.$ext1
       do filename2="${image2##*/}"
       if [ "$(date -d"${filename2:10:8}" +%A)" = "mardi" ]
       then composite -compose Over "$imagemardi" "$image2" "$image2"
       fi
    done
     
    for image3 in $destt$c01$o/*.$ext1
       do filename3="${image3##*/}"
       if [ "$(date -d"${filename3:10:8}" +%A)" = "mercredi" ]
       then composite -compose Over "$imagemercredi" "$image3" "$image3"
       fi
    done
     
    for image4 in $destt$c01$o/*.$ext1
       do filename4="${image4##*/}" 
       if [ "$(date -d"${filename4:10:8}" +%A)" = "jeudi" ]
       then composite -compose Over "$imagejeudi" "$image4" "$image4"
       fi
    done
     
    for image5 in $destt$c01$o/*.$ext1
       do filename5="${image5##*/}"
       if [ "$(date -d"${filename5:10:8}" +%A)" = "vendredi" ]
       then composite -compose Over "$imagevendredi" "$image5" "$image5"
       fi
    done
     
    for image6 in $destt$c01$o/*.$ext1
       do filename6="${image6##*/}"
       if [ "$(date -d"${filename6:10:8}" +%A)" = "samedi" ]
       then composite -compose Over "$imagesamedi" "$image6" "$image6"
       fi
    done
     
    for image7 in $destt$c01$o/*.$ext1
       do filename7="${image7##*/}"
       if [ "$(date -d"${filename7:10:8}" +%A)" = "dimanche" ]
       then composite -compose Over "$imagedimanche" "$image7" "$image7"
       fi
     
    done

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #!/bin/bash
     
    shopt -s nullglob
     
    ba="/mnt/Test"
     
    destt="/Test/Image/Photo"
    o="Original"
     
    ext=( jpg png bmb )
     
    #NOM DES PHOTOS
    c01=ALBUM35
     
    rm -r "$destt/$c01"
    cp -r "$ba/$c01" "$destt/$c01"
     
    cd "$destt/$c01/$o"
    for image in *.${ext[0]}
    do case $(date -d"${image:10:8}" +%A) in
          lundi) imageJour="LUN.png";;
          mardi) imageJour="MAR.png";;
          mercredi) imageJour="MER.png";;
          jeudi)    imageJour="JEU.png";;
          vendredi) imageJour="VEN.png";;
          samedi) imageJour="SAM.png";;
          dimanche) imageJour="DIM.png";;
       esac
       composite -compose Over "/Test/Drapeau/J/$imageJour" "$image" "$image"
    done
    je ne suis pas fan des cd dans les scripts, ici, ça évite un remplacement de paramètre dans une boucle (je vais peut-être redevenir copain avec cd)
    je préfère utiliser un case, que des if qui réévaluent ~la même chose.

    je comprend un peu mieux ce que tu veux faire, l'indirection est alors inutile.

    par contre, les chemins sont brouillés : seuls les chemins absolus doivent commencer par / (j'ai mis tes variables à ma sauce, je ne sais pas si ça fonctionnera : à vérifier)
    et, lors de la concaténation de chemins, je préfère voir les / séparer les $répertoires, plutôt qu'une grosse concaténation difficilement déchiffrable.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    un grand merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [BASH] Test sur les dates
    Par pdavid dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 25/05/2011, 17h14
  2. Réponses: 4
    Dernier message: 21/02/2011, 22h33
  3. Script Bash comparer date fichier
    Par molbento dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/08/2009, 12h12
  4. BASH: date avec argument variable
    Par Estats dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/10/2008, 14h12
  5. Script Bash et condition date
    Par pcsystemd dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 28/04/2008, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo