Equivalente de data - referência no Solaris

6

A implementação GNU do comando date tem um bom recurso para mostrar a data da última modificação de um arquivo de referência. Então, usando o parâmetro +FORMAT , é fácil obter a data em qualquer formato, por exemplo:

date -r /etc/motd +%Y%m%d_%H%M%S
# output in the format: 20121001_171233

Existe um equivalente para isso no Solaris? Como solução alternativa, faço isso usando a função stat de perl da seguinte forma:

perl -mPOSIX -e 'print POSIX::strftime("%Y%m%d_%H%M%S\n", localtime((stat("/etc/motd"))[9]))'

Outra alternativa é analisar a saída de ls -Ego :

ls -Ego /etc/motd | awk '{print $4 "_" $5}' | tr -d :- | sed -e 's/\..*//'

Mas analisar a saída de ls é conhecido como uma prática ruim.

Existe uma solução melhor / mais simples / mais elegante?

    
por janos 11.10.2012 / 09:21

3 respostas

2

A incapacidade de date de imprimir qualquer coisa, exceto a data atual, é um defeito muito lamentável. Alguns unices permitem que ele imprima outras datas, mas infelizmente para você não o Solaris.

Contanto que você precise apenas de saída numérica, é possível analisar a saída de ls -Ego . As opções -go suppres o nome do usuário e do grupo e -E é uma opção específica do Solaris para ls que exibe a hora em um formato analisável.

ls -Ego /path/to/file |
awk 'NR==1 {$0 = $4 "_" $5; gsub(/[-:]/,""); sub(/\..*/, ""); print}'

(Isso funciona com /usr/bin/ls , mas requer um awk compatível com POSIX, portanto, certifique-se de ter /usr/xpg4/bin ou /usr/xpg6/bin à frente de /usr/bin no seu PATH ou ligue para nawk .)

    
por 15.10.2012 / 01:43
2

Eu acho que Perl é sua melhor aposta; Não conheço nenhum conversor de data útil no Solaris e o comando date imprime ou define apenas a hora atual.

    
por 11.10.2012 / 12:42
0

Bem, não exatamente o formato que você quer, mas que tal

stat -c %y /etc/motd
=>
  2011-03-08 11:39:20.000000000 +0000

e, em seguida, use o que você preferir para dar forma a esse timestamp.

Editar
Estou assumindo o OpenSolaris ou o Solaris 11, onde a versão GNU de stat é empacotada.

    
por 11.10.2012 / 16:28