mac bash上文件的格式化修改日期/时间?

Posted

技术标签:

【中文标题】mac bash上文件的格式化修改日期/时间?【英文标题】:formatted modified date/time of file on mac bash? 【发布时间】:2012-08-23 13:52:09 【问题描述】:

在我在 mac(雪豹)上的 bash 脚本中,我有一个路径和文件名,我需要获取该文件的修改日期/时间。我发现我可以做到:stat -f "%m" $MYFILE

但是,这会返回我假设的纪元日期/时间。我需要格式化日期/时间:YYYYMMDDThhmmss。我发现了各种显然依赖于 GNU 的选项(如 date),而我的 Mac 上没有这些选项。

在 mac (BSD?) bash 上以用户指定的格式修改文件日期/时间的标准方法是什么。或者至少,一个日期/时间格式化函数,我可以将上面的stat 调用的结果传递给它。

【问题讨论】:

【参考方案1】:

它实际上非常简单,但与 GNU date 的不同之处在于它远非显而易见:

date -r $TIMESTAMP +%Y%m%dT%H%M%S

stat 进行格式化:

stat -f "%Sm" -t "%Y%m%dT%H%M%S" FILE

【讨论】:

这个问题终于简单了,直截了当,没有华而不实的有效答案!我不敢相信有多少人认为我真的关心学习所有 1,000 个 stat 或 date 命令的修饰符......只要给我一个有效的命令,就是这样!非常感谢!【参考方案2】:
# how-to list all the files and dir in a dir sorted by their
# modified time in the different shells 
# usually mac os / Unix / FreeBSD stat 
stat -f "%Sm %N" -t "%Y-%m-%d %H:%M:%S" ~/opt/comp/proj/*|sort 

# STDOUT output:
# 2018-03-27 15:41:13 ~/opt/comp/proj/foo
# 2018-03-28 14:04:11 ~/opt/comp/proj/bar

# GNU Utils ( usually on Linux ) stat 
# STDOUT output:
stat -c "%y %n" ~/opt/comp/proj/*|sort

# 2018-03-29 09:15:18.297435000 +0300 ~/opt/comp/proj/bar
# 2018-03-29 09:15:18.297435000 +0300 ~/opt/comp/proj/foo

【讨论】:

以上是关于mac bash上文件的格式化修改日期/时间?的主要内容,如果未能解决你的问题,请参考以下文章

mac终端下修改MySQL的编码格式--找不到my-default.cnf及my.cnf

mac 怎么修改硬盘的格式?

怎么更改电脑日期格式

解析日期和时间格式 - Bash

C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间

在 bash 中转换日期格式