19

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

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

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

4

2 回答 2

42

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

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

stat进行格式化:

stat -f "%Sm" -t "%Y%m%dT%H%M%S" FILE
于 2012-08-29T02:54:23.740 回答
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
于 2018-03-29T06:17:20.620 回答