Fecha de formato AAAA-MM-DD en script de shell

Intenté usar $(date) en mi script bash shell, sin embargo, quiero la fecha en formato AAAA-MM-DD. ¿Cómo obtengo esto?

En Bash:

obtener año-mes-día desde la date

 DATE=`date +%Y-%m-%d` 

obtener hora año-mes-día: minuto: segunda date

 DATE=`date '+%Y-%m-%d %H:%M:%S'` 

Se pueden ver otros formatos de fecha disponibles desde las páginas de manual de la fecha :

 man date 

Pruebe: $(date +%F)

Puedes hacer algo como esto:

 $ date +'%Y-%m-%d' 

Está buscando el formato de fecha estándar ISO 8601 , por lo que si tiene fecha GNU (o cualquier comando de fecha más moderno que 1988) simplemente haga lo siguiente: $(date -I)

 date -d '1 hour ago' '+%Y-%m-%d' 

La salida sería 2015-06-14 .

Con Bash reciente (versión ≥ 4.2), puede usar el printf incorporado con el modificador de formato %(strftime_format)T :

 $ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time") 2017-11-10 $ printf '%(%F)T\n' -1 # Synonym of the above 2017-11-10 $ printf -v date '%(%F)T' -1 # Capture as var $date 

si desea el año en un formato de dos números como 17 en lugar de 2017, haga lo siguiente:

 DATE=`date +%d-%m-%y` 

Cada vez que tengo una tarea así termino volviendo a

 $ man strftime 

para recordarme a mí mismo todas las posibilidades.

 #!/bin/bash -e x='2018-01-18 10:00:00' a=$(date -d "$x") b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S") c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S") #date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S" echo Entered Date is $x echo Second Date is $b echo Third Date is $c 

Aquí x es la fecha de muestra utilizada y, a continuación, el ejemplo muestra tanto el formato de los datos como la obtención de fechas 10 minutos más que la fecha actual.

 $(date +%F_%H-%M-%S) 

se puede usar para eliminar dos puntos (:) entre medio

salida

 2018-06-20_09-55-58