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