Obtenha a data de hoje e use-a no nome do arquivo

10

Usando a linha de comando, desejo criar um arquivo de log com a data de hoje no nome (por exemplo, hoje é 17/05/2011, portanto, o nome do arquivo deveria ser log051711).

Sei como criar o arquivo ( touch filename), mas não sei como obter a data de hoje. Eu olhei para o manual date, mas parece que eu realmente não consigo formatar sua saída?

Qualquer ajuda seria apreciada.

Louis B.
fonte

Respostas:

10

Você pode formatar a saída usando o parâmetro '+ FORMAT', por exemplo

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

Veja a página de manual para quais sequências você pode usar no FORMAT.

Florian Diesch
fonte
Porra, 36 segundos muito lento. ;-)
htorque 17/10
1
Acabei de descobrir que, para usar isso em um trabalho cron, eu tinha que escapar dos% -signs, para que ele lesse:touch "log$(date +'\%m\%d\%y')"
Louis B.
3

Executando o comando

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

dá isso como a saída:

myfilename-21-02-2014
Sreedhar GS
fonte
Na verdade, isso será impresso myfilename-date +%d-%m-%Y.
Adaephon
Verdadeiro .. MyFileName é apenas um prefixo .. Se necessário, podemos mantê-lo, senão .. eco, date +"%d-%m-%Y" isso é suficiente ... ele será impresso apenas na data 21-02-2014
Sreedhar GS
Ah, agora entendi: fiquei confuso porque o `não apareceu na sua resposta. Isso ocorre porque eles são usados ​​pelo askubuntu para indicar blocos de código. Você deve marcar o código cercando-o com reticulares ou recuando o parágrafo com o código com 4 espaços. Para iniciantes, você provavelmente deve usar o menu acima do editor e verificar sua postagem na pré-visualização abaixo da caixa de texto antes de enviar.
Adaephon
0

Uma das possíveis almas:

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

cria log111017

Sergey
fonte
0

Tenho certeza que alguém tem uma maneira melhor de fazer isso, mas supondo que você queira mês-dia-ano, isso deve funcionar:

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

e você pode reordenar o% m,% d,% Y para refletir a ordem desejada. A página de manual da data informa mais sobre formatos adicionais.

Dason
fonte
0

O Python também pode fazer esse trabalho. O pequeno script para isso seria o seguinte:

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

A idéia aqui é simples: usamos time.gmtime()para obter a data atual, extrair campos específicos da estrutura que ela retorna, converter campos apropriados em strings e criar nome do arquivo com o nome resultante.

Execução de teste:

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

No momento da escrita, é 3 de janeiro de 2017. Portanto, o nome do arquivo resultante é apropriadamente mês, dia, ano - log010317

Sergiy Kolodyazhnyy
fonte