Ottieni la data di oggi e usala nel nome del file


10

Utilizzando la riga di comando, voglio creare un file di registro con la data odierna nel nome (ad esempio, oggi è il 17/05/2011, quindi il nome del file dovrebbe essere log051711).

So come creare il file ( touch filename), ma non so come ottenere la data di oggi. Ho guardato il manuale per date, ma sembra che non riesca davvero a formattare il suo output?

Qualsiasi aiuto sarebbe apprezzato.

Risposte:


10

È possibile formattare l'output utilizzando il parametro '+ FORMAT', ad es

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

Vedi la manpage per quali sequenze puoi usare in FORMATO.


Dannazione, 36 secondi troppo lenti. ;-)
htorque,

1
Ho appena capito che per usarlo in un cron job, ho dovuto sfuggire ai segni%, in modo che dicesse:touch "log$(date +'\%m\%d\%y')"
Louis B.

3

Esecuzione del comando

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

dà questo come output:

myfilename-21-02-2014

In realtà questo verrà stampato myfilename-date +%d-%m-%Y.
Addio il

Vero ... MyFileName è solo un prefisso .. Se necessario possiamo tenerlo, altrimenti .. echo date +"%d-%m-%Y" questo è abbastanza ... stamperà solo la data 21-02-2014
Sreedhar GS

Ah, ora vedo: mi sono confuso perché il `non è apparso nella tua risposta. Questo perché vengono utilizzati da askubuntu per indicare blocchi di codice. È necessario contrassegnare il codice circondandolo di backtick o rientrando nel paragrafo con il codice con 4 spazi. Per i principianti probabilmente dovresti usare il menu sopra l'editor per quello e controllare il tuo post nell'anteprima sotto la casella di testo prima di inviare.
Adaephon,

0

Una delle possibili anime:

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

crea log111017


0

Sono sicuro che qualcun altro ha un modo migliore per farlo, ma supponendo che tu voglia mese-giorno-anno dovrebbe funzionare:

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

e puoi riordinare% m,% d,% Y per riflettere l'ordine che desideri. La pagina man per data ti dice di più sui formati aggiuntivi.


0

Python può fare anche questo lavoro. Il piccolo script per questo sarebbe il seguente:

#!/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) 

L'idea qui è semplice: usiamo time.gmtime()per ottenere la data corrente, estrarre campi specifici dalla struttura che restituisce, convertire i campi appropriati in stringhe e creare un nome file con il nome risultante.

Prova:

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

Al momento della scrittura è il 3 gennaio 2017. Pertanto il nome file risultante è appropriatamente mese, giorno, anno - log010317

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.