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

9

Usando a linha de comando, eu quero criar um arquivo de log com a data de hoje no nome (por exemplo, hoje é 17/05/2011, então o nome do arquivo teria que ser log051711 ) .

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

Qualquer ajuda seria apreciada. :)

    
por Louis B. 17.10.2011 / 13:55

5 respostas

8

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

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

Veja a manpage de quais sequências você pode usar em FORMATO.

    
por Florian Diesch 17.10.2011 / 14:02
1

Executando o comando

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

fornece isso como a saída:

myfilename-21-02-2014
    
por Sreedhar GS 21.02.2014 / 06:40
0

Uma das possíveis almas:

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

cria log111017

    
por Sergey 17.10.2011 / 14:05
0

Tenho certeza de que outra pessoa tem uma maneira melhor de fazer isso, mas supondo que você queira um 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 man page for date informa mais sobre formatos adicionais.

    
por Dason 17.10.2011 / 14:09
0

O Python também pode fazer esse trabalho. O pequeno roteiro 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 ele retorna, converter campos apropriados em strings e criar nome de 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. Assim, o nome do arquivo resultante é apropriadamente mês, dia, ano - log010317

    
por Sergiy Kolodyazhnyy 03.01.2017 / 09:47