Obtenga la fecha de hoy y úsela en el nombre del archivo

10

Usando la línea de comandos, quiero crear un archivo de registro con la fecha de hoy en el nombre (por ejemplo, hoy es 17/05/2011, por lo que el nombre del archivo debería ser log051711).

Sé cómo crear el archivo ( touch filename), pero no sé cómo obtener la fecha de hoy. He buscado el manual date, pero parece que realmente no puedo formatear su salida.

Cualquier ayuda sería apreciada.

Louis B.
fuente

Respuestas:

10

Puede formatear la salida utilizando el parámetro '+ FORMATEAR', p. Ej.

touch "log$(date +'%m%d%y')"

Consulte la página de manual para ver qué secuencias puede usar en FORMAT.

Florian Diesch
fuente
Maldición, 36 segundos demasiado lento. ;-)
htorque
1
Me acabo de dar cuenta de que para usar esto en un trabajo cron, tuve que escapar de los signos%, para que se lea:touch "log$(date +'\%m\%d\%y')"
Louis B.
3

Ejecutando el comando

echo "myfilename-"`date +"%d-%m-%Y"`

da esto como la salida:

myfilename-21-02-2014
Sreedhar GS
fuente
En realidad esto se imprimirá myfilename-date +%d-%m-%Y.
Adaephon
Verdadero ... MyFileName es solo un prefijo ... Si es necesario, podemos mantenerlo, de lo contrario ... echo date +"%d-%m-%Y" esto es suficiente ... solo se imprimirá la fecha 21-02-2014
Sreedhar GS
Ah, ahora veo: me confundí porque el `no apareció en su respuesta. Esto se debe a que askubuntu los utiliza para indicar bloques de código. Debe marcar el código rodeándolo con comillas invertidas o marcando el párrafo con el código con 4 espacios. Para empezar, probablemente deberías usar el menú sobre el editor para eso y revisar tu publicación en la vista previa debajo del cuadro de texto antes de enviarla.
Adaephon
0

Una de las posibles almas:

date +log%y%m%d | xargs touch

crea log111017

Sergey
fuente
0

Estoy seguro de que alguien más tiene una mejor manera de hacer esto, pero suponiendo que quieras mes-día-año, esto debería funcionar:

touch log`date +%m%d%y`  

y puede reordenar% m,% d,% Y para reflejar el orden que desee. La página del manual para la fecha le brinda más información sobre formatos adicionales.

Razón
fuente
0

Python también puede hacer este trabajo. El pequeño script para eso sería el siguiente:

#!/usr/bin/env python
import time,os

date=time.gmtime()
month = str(date.tm_mon).zfill(2)
day=str(date.tm_mday).zfill(2)
year=str(date.tm_year)[-2:]
fname = 'log' + month + day + year

with open(fname,'a') as f:
    os.utime(fname,None) 

La idea aquí es simple: utilizamos time.gmtime()para obtener la fecha actual, extraer campos específicos de la estructura que devuelve, convertir los campos apropiados en cadenas y crear un nombre de archivo con el nombre resultante.

Prueba de funcionamiento:

$ ls
touch_log_file.py*
$ ./touch_log_file.py                                                                                             
$ ls
log010317  touch_log_file.py*

En el momento de escribirlo, es el 3 de enero de 2017. Por lo tanto, el nombre de archivo resultante es apropiadamente mes, día, año. log010317

Sergiy Kolodyazhnyy
fuente