写了个脚本把之前三年的晨间日记转为hugo格式,其中最核心的处理就是生成日记时间,由于linux下没有创建时间,只有最后修改时间,为了把日记所属日期准确找出来,认真研究了下linux里的三个时间。

概念

修改时间

简称:mtime,modify time 文件内容变更的时间,影响该值的如vi(注意:vi时内容有修改,并且使用:wq保存退出,该值才会变化) 查看命令

1
2
#列举当前目录的文件,默认显示修改时间
ls -l

状态改变时间

简称:ctime,change time 文件属性变更的时间,影响该值的典型命令如chmod\chown,当然,内容变更该值也会同步更新。 查看命令:

1
ls -lc

访问时间

简称:atime,access time 文件的访问时间,影响该值的典型命令如tail\more\less\cat(注意:ls\stat这样的命令不会影响该值) 查看命令:

1
ls -lu

应用

根据时间查找文件

1
2
3
4
5
6
#查找当前目录最后一次修改时间在n天以前的文件:(当前时间-mtime)>(n+1)*24
find . -mtime +n
#查找当前目录最后一次修改时间刚好在n天那一天的文件:n*24<(当前时间-mtime)<(n+1)*24
find . -mtime n
#查找当前目录最后一次修改时间在n天以内的文件:(当前时间-mtime)<n*24
find . -mtime -n

列出文件的最后修改时间

1
stat -x -t "%Y-%m-%dT%H:%M:%S%:z" | grep -i Modify | awk '{print $2}'

Note

上面这个格式化语句%Y-%m-%dT%H:%M:%S%:z在mac中无法使用,mac只能使用%Y-%m-%dT%H:%M:%S%z输出+0800,无法输出标准iso8601时区+08:00