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

时间:2012-08-29 01:25:12

标签: macos bash datetime bsd last-modified

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

然而,这回归我所假设的纪元日期/时间。我需要格式化的日期/时间:YYYYMMDDThhmmss。我发现了各种各样的选项(比如date)显然依赖于GNU,这在我的mac上我没有。

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

2 个答案:

答案 0 :(得分:32)

它实际上非常简单,但与GNU date不同,它远不是那么明显:

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

要让stat进行格式化:

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

答案 1 :(得分:0)

# 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