Como se livrar de segundos fracionários em encontrar usando-printf?

5

Estou executando este comando shell para obter os 20 arquivos PHP mais recentes modificados no meu servidor.

find . -name '*.php' -printf '%TY-%Tm-%Td %TH:%TM:%TS %Tz %p\n' | sort -r | head -20

A saída é assim:

2016-08-08 01:44:45.3820716170 -0700 ./html/index.php
2016-08-07 05:39:29.0000000000 -0700 ./html/thumb.php
2016-08-07 03:01:44.0000000000 -0700 ./html/paths.php
...

De acordo com a página de manual do strftime , eu deveria ser capaz de usar% S (e% TS)

%S

The second as a decimal number (range 00 to 60). (The range is up to 60 to allow for occasional leap seconds.)

Provavelmente, há algo acontecendo com find , mas os outros parâmetros de tempo funcionam conforme o esperado. Estou tentando obter resultados como o seguinte. Se a string extra for de fato fracionária, o arredondamento ou o truncamento será aceitável. Como isso pode ser feito?

2016-08-08 01:44:45 -0700 ./html/index.php
2016-08-07 05:39:29 -0700 ./html/thumb.php
2016-08-07 03:01:44 -0700 ./html/paths.php
...

(e se há uma maneira mais eficiente de fazer o que o comando acima faz, eu sou todo ouvidos.)

    
por Drakes 08.08.2016 / 14:34

1 resposta

5

Você pode truncar a parte fracionária usando a sintaxe de formatação %.n , em que n é um inteiro que especifica o comprimento da string que você deseja manter. No seu caso particular, o encantamento seria:

find . -name '*.php' -printf '%TY-%Tm-%Td %TH:%TM:%.2TS %Tz %p\n' | sort -r | head -20

    
por 10.08.2016 / 09:16