这似乎是各种平台上非标准功能的经典案例。
很简单,我想要一种普遍(或至少广泛)支持的方法来获取文件的修改时间,以秒为单位的 unix 时间戳。
现在我知道有多种方法可以做到这一点,stat
但大多数都是特定于平台的;例如stat -c %Y $file
,适用于某些人,但不适用于 OS X(可能还有其他 FreeBSD 系统),而后者则使用它stat -f %m $file
。
同样,一些平台支持date -r $file +%s
,但是 OS X/FreeBSD 再次不支持,因为该-r
选项似乎只是+%s
用于获取 unix 时间戳的替代方法,而不是其他平台上的参考文件选项。
我熟悉的另一种选择是使用find
该-printf
选项,但同样没有得到广泛支持。我知道的最后一种方法是解析ls
,除了是一件令人不快的事情之外,我认为也不是可以(或至少应该)依赖的东西。
那么,是否有更兼容的方法来获取文件的修改时间?目前,我只是将不同的变体stat
放入脚本中并运行它们,直到一个以零状态退出,但这远非理想,即使我缓存了成功的命令以在将来首先运行。