2012-08-24 10 views

Antwort

11
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done 
+0

wie dies automatisch zu tun mit Leckjahren? –

+0

@DmitryDubovitsky Was meinst du? '29.02.2012' ist in der Ausgabe vorhanden. –

+0

es automatisch, zum Beispiel für 2011 Jahr letzter Datensatz wäre 2012-01-01 etwas, das ausgegeben werden soll: 'days_in_year = date "2012-12-31" + "% j"; für d in ... ' –

2

keine reine bash Lösung, aber meine dateutils kann Hilfe:

dseq 01.01.2012 31.12.2012 -f %d.%m.%Y -i %d.%m.%Y 
=> 
    01.01.2012 
    02.01.2012 
    ... 
    31.12.2012 

Ausgabeformat kann mit -f und Eingabeformat konfiguriert werden wit h -i.

0

Mit einem Datumsformat nach ISO 8601 (Jahr-Monat-Tag) können Sie Daten lexikografisch vergleichen. Es ist ein bisschen unordentlicher als ich möchte, da bash keinen "< =" Operator für Strings hat.

year=2011 
d="$year-01-01" 
last="$(($year+1))-01-01" 
while [[ $d < $last ]]; do 
    echo $d 
    d=$(date +%F --date "$d + 1 day") 
done 
Verwandte Themen