Como analisar uma string como 20170202 para uma data em um script bash?

3

Digamos que eu tenha vários arquivos gerados por um script e siga o padrão:

yyyymmdd_fileName.fileExtension

E yyyymmdd (ou seja, 20170202) é uma data, em que ano é 2017, mês é fevereiro e dia é o segundo).

Eu sei que posso obter o nome completo do arquivo e extrair a parte da data, mas como posso torná-lo um elemento de data para que eu possa comparar com a data atual fornecida por date ?

    
por gtludwig 02.02.2017 / 10:47

2 respostas

3

Use -d arg de date .

man date

   -d, --date=STRING
          display time described by STRING, not 'now'
$ date -d 20170202
Thu Feb  2 00:00:00 CET 2017

Para facilitar a comparação, você pode usar o formato unixdate

$ date -d 20170203 +%s
1486076400
    
por 02.02.2017 / 11:08
0

Outra opção é usar touch . Isso deve funcionar na maioria dos sistemas, mas você precisa especificar o tempo como hhmm.ss . Eu normalmente uso 1200.00 .

touch -t 201702021200.00
    
por 03.02.2017 / 03:48