6

Я запускаю эту команду оболочки, чтобы получить последние 20 файлов PHP, измененных на моем сервере.

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

Вывод выглядит так:

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
...

Согласно man-странице strftime, я должен иметь возможность использовать% S (и% TS)

% S

Второй как десятичное число (от 00 до 60). (Диапазон составляет до 60, чтобы учесть случайные високосные секунды.)

Вероятно, что-то происходит с find , но другие параметры времени работают как положено. Я пытаюсь получить результаты, подобные следующим. Если дополнительная строка на самом деле составляет доли секунды, то округление или усечение - это хорошо. Как это может быть сделано?

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
...

(и если есть более эффективный способ сделать то, что делает вышеприведенная команда, я весь в ушах.)

1 ответ1

6

Вы можете усечь дробную часть, используя синтаксис форматирования %.n , где n - целое число, указывающее длину строки, которую вы хотите сохранить. В вашем конкретном случае, заклинание будет:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .