Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 15h19   #1
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
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 :
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
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h51   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h20   #3
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
$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
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h42   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
donc :
Code :
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h51   #5
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
je teste ca!

dit moi quand tu utilise $ à la fin du mot tu crée une variable pour la variable image ?
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 17h02   #6
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
dans ton bash imagelundi="/test/image/lundi.png"

ou apparait t"elle plus loin ?


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

Code :
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
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 17h05   #7
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
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 :
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 .
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 17h43   #8
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
Citation:
Envoyé par cyberrage01
je ne comprend pas comment il interprette lundi mardi mercredi jeudi vendredi samedi dimanche
c'est ici :
Code :
date -d"${image:5:8}" +%A
oups, j'avais oublié une accolade
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 22h59   #9
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
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 :
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
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 00h59   #10
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
Code :
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/02/2011, 11h03   #11
Invité régulier
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 7
Points : 7
un grand merci
cyberrage01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h12.


 
 
 
 
Partenaires

Hébergement Web