Formato de data no UNIX

5

Como posso mostrar a data no formato AAAA-MM-DDTHH: MM: SS + ZZZZ no LINUX? Eu preciso escrever a data de criação de um arquivo, digamos file1 em outro arquivo, digamos file2 em determinado formato. Ajude-me a conseguir isso.

    
por Abhishek Kapoor 08.10.2013 / 07:17

4 respostas

10

O formato de data ao qual você está se referindo é ISO 8601. Use a opção -I para o comando date para formatar as datas de acordo com esse formato ( s especifica precisão até segundos inteiros):

$ date -Is
2013-10-08T10:48:03+0300

Para obter a hora da última modificação de um arquivo (em segundos desde a época), use o especificador de formato %Y com o comando stat :

$ stat -c %Y file1
1378818806

Combinando esses dois, use date -d para formatar a saída de stat -c :

$ date -Is -d @'stat -c %Y file1'
2013-09-10T16:13:26+0300

Portanto, esta é a declaração que faz o que você precisa:

$ date -Is -d @'stat -c %Y file1' > file2
    
por zwets 08.10.2013 / 11:13
5

Você pode exibir uma data assim com este comando:

$ date +%Y-%m-%dT%H:%M:%S%z
2013-10-08T07:38:45+0200

Muitos sistemas de arquivos não armazenam uma data de criação do arquivo, portanto, nem sempre há um método para obtê-lo. Se o arquivo nunca foi modificado desde a sua criação, isso funcionaria:

$ date -r file1 +%Y-%m-%dT%H:%M:%S%z > file2
$ cat file2
2013-10-08T07:32:52+0200
    
por jlliagre 08.10.2013 / 07:40
1
Combinando minha resposta anterior e de @jlliagre , a maneira mais concisa de fazer o que você quer é:

date -Is -r file1 > file2
    
por zwets 08.10.2013 / 12:12
1

Isso ajuda você?

ls -c -l file1 --time-style="+%Y-%m-%dT%H:%M:%S%z" > file 2
    
por MadMike 08.10.2013 / 07:42

Tags