首先简单讲一下Linux时间戳atime ctime mtime的概念

atime:Access Time 最后一次访问文件(读取或执行)或目录的时间

mtime:Modofy Time 最后一次修改文件(内容)或目录(内容)的时间

ctime:Change Time 最后一次改变文件(属性)或目录(属性)的时间

atime ctime mtime的区别

atime

access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文件的Access time.

mtime

modify time(mtime):是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的modify time,平常我们使用ls –l查看文件时,显示的时间就是modify time.

ctime

change time(ctime):是指文件属性或文件位置改动的时间,如使用chmod,chown,mv指令集使用ln做文件的硬是连接,就会改变文件的change time.

查看时间戳的两种方式:

1、stat filename

2、atime: ls -lu filename

mtime: ls -l filename

ctime: ls -lc filename

下面给出一个截取mtime的shell命令:

stat filename | grep -i Modify | awk -F. ‘{print $1}‘ | awk ‘{print $2$3}‘| awk -F- ‘{print $1$2$3}‘ | awk -F: ‘{print $1$2$3}‘

touch指令的作用就是用于改变文件的时间戳,touch命令的语法格式如下:

touch [选项]... filename...

选项与参数:

-a  : 仅修订 atime;

-c  : 仅修改档案的时间,若该档案不存在则不建立新档案;

-d  : 后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"

-m  : 仅修改 mtime ;

-t  : 后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

-r  : 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同

...

备注:

(1)如果修改文件(使用编辑器存盘或使用>>转向操作),则modify time和change time会同步更新成写入的时间,但access time不变。

(2)如果执行touch文件,则3种时间全部改变

(3)使用ln -s做文件的软链接,会改变文件的取用时间atime

(4)使用ls -la查看一般文件,不会更改这三种时间,但如果这个文件时符号链接文件,则会改变取用的时间(access time)

(5)ls -l默认显示出来的时间是文件的mtime