Como representar o formato de data em '2015120' no shell do Linux?

4

Meu colega está gerando arquivos de registro com um formato de data anterior, como 2015120 , que representa janeiro como 1 em vez de 01 .

A maneira normal que estou usando para lidar com esse tipo de problema é usar date command.Like date +'%Y%m%d' . Mas eu manejei o comando da data, acontece que eles não mencionaram representar janeiro sem o anterior 0.

Então, eu estou querendo saber se existe outra maneira de representar a data como 2015120 no Linux?

    
por Zen 20.01.2015 / 09:46

3 respostas

22

Com GNU, FreeBSD ou OS / X date (ou date implementações que usam libc do sistema% dostrftime() do sistema, onde é o GNU libc ), adicionando hífen - após % impede que campos numéricos sejam preenchidos com zeros:

$ date +'%Y%-m%d'
2015120

De data do homem em um sistema GNU:

By default, date pads numeric fields with zeroes. The following optional flags may follow '%':

- (hyphen) do not pad the field

Se o seu sistema date não suporta isso, você pode usar perl :

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122
    
por 20.01.2015 / 09:53
4
> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120
    
por 20.01.2015 / 09:51
2

Se você adicionar um (1) após o hífen (-), ele funciona no Linux e também é portável para HP-UX (e possivelmente outros tipos de UNIX):

$ date +'%Y%-1m%d'
2015120
    
por 20.01.2015 / 21:36