GNU coreutils (8.6) 版本是否已stat
更改?最近更新后,我编写的一些调用 stat 的脚本无法按预期工作;特别是,我一直在使用stat -c %Y "${filename}"
.这应该以自“Epoch”以来的秒数形式返回上次修改的时间。然而,我可以发誓它曾经采用整个整数的形式。但是,我现在从该表单1287630625.956667227
而不是1287630625
.由于 Bash 无法处理浮点运算,这有点烦人。这是故意的改变吗?还是一个错误?还是我的记忆已经模糊了?我尝试搜索这方面的信息,但找不到任何信息。
答案1
stat:以全分辨率打印时间戳致力于 coreutils-8.6。
$ git 克隆 git://git.savannah.gnu.org/coreutils.git $ cd coreutils $ git log -1 --grep=时间 -- src/stat.c 提交 9069af45e691d1252c727da66aa4f3f3c7f1ea29 作者:Eric Blake 日期: 2010 年 9 月 30 日星期四 16:42:13 -0600 stat:以全分辨率打印时间戳 * src/stat.c (epoch_time):新函数。 (print_stat):将其用于%[WXYZ]。 * 新闻:记录这一点。 * 测试/触摸/60 秒:调整测试以匹配。 *测试/杂项/统计出生时间:同样。 $ git 描述 --包含 9069af4 v8.6~29
答案2
这是不必要的破坏,并被恢复为coreutils
≥ 8.7
。
从那时起,您需要指定%.Y
etc 来获取小数部分