2012-08-24 12 views

Respuesta

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

cómo hacerlo automáticamente con años de fuga? –

+0

@DmitryDubovitsky ¿Qué quieres decir? '29.02.2012' está presente en la salida. –

+0

desea dar salida de forma automática, por ejemplo Para el 2011 el año pasado registro sería 2012-01-01 algo que: 'days_in_year = fecha "2012-12-31" + "% j"; for d in in ... ' –

2
No

una solución fiesta pura, pero mi dateutils puede Ayuda:

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

formato de salida se puede configurar con -f y formato de entrada ingenio h -i.

0

Utilizando un formato de fecha ISO 8601 (año-mes-día), puede comparar fechas lexicográficamente. Es un poco más desordenado de lo que me gustaría, ya que bash no tiene un operador "< =" para cadenas.

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 
Cuestiones relacionadas