首先简单讲一下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