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.
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. :)
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.
Executando o comando
echo "myfilename-"'date +"%d-%m-%Y"'
fornece isso como a saída:
myfilename-21-02-2014
Uma das possíveis almas:
date +log%y%m%d | xargs touch
cria log111017
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.
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
Tags command-line date filename