Dans le cadre de la soumission d’événements se déroulant le premier samedi du mois, je me suis posé la question de générer automatiquement la liste des premiers samedis de tous les mois d’une année. La commande date de FreeBSD propose une option -v permettant rapidement d’obtenir d’autres dates, par addition. Ce n’est pas le cas de la commande GNU date. Néanmoins, on peu, en un ligne de shell trouver les premiers samedis d’une année :

for i in january february march april may june july august september october november december ; do for j in 0 1 2 3 4 5 6 ; do if [ "`date --date "1 $i 2012 + $j days" "+%A"`" = samedi ] ; then date --date "1 $i 2012 + $j days" "+%c" ; fi; done ; done

Dans le cadre de la soumission à l’Agenda du Libre, j’ai donc utilisé la commande suivante :

for i in february march april may june july august september october november december ; do for j in 0 1 2 3 4 5 6 ; do if [ "`date --date "1 $i 2012 + $j days" "+%A"`" = samedi ] ; then ./adl-submit.py --file premier-samedi.xml --start-date `date --date "1 $i 2012 + $j days" --iso` ; fi; done ; done

P.S. adl-submit.py se trouve sur la page de soumission d’événements. On y trouve également la description du format du fichier premier-samedi.xml