我正在运行这个 shell 命令来获取我的服务器上最近修改的 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
...
根据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
您可以使用格式化语法截断小数部分%.n
,其中n
是一个整数,指定要保留的字符串的长度。在您的特定情况下,咒语将是:
find . -name '*.php' -printf '%TY-%Tm-%Td %TH:%TM:%.2TS %Tz %p\n' | sort -r | head -20