Linux下文件的三个时间(Atime,Mtime,Ctime)
[root@node ~]# stat install.log File: `install.log' Size: 58137 Blocks: 128 IO Block: 4096 regular file Device: fd00h/64768d Inode: 524291 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-11-22 16:13:59.597460379 +0800 Modify: 2014-10-20 05:03:26.266999759 +0800 Change: 2014-10-20 05:03:37.875999758 +0800
可以从上图看到系统为我们保存了这个的三个时间,分别是Access time、Modify time、Change time,也就是访问时间、修改时间和状态时间。
那么与前面所说的windows下做一个对比:
在windows下,一个文件有:创建时间、修改时间、访问时间。
而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态时间
解释:
>修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间,当用vim对文件进行编辑之后保存,它的mtime就会相应的改变; >访问时间:对文件进行一次读操作,它的访问时间就会改变。例如像:cat、more等操作,但是像之前的state还有ls命令对atime是不会有影响的; >状态时间:当文件的状态被改变的时候,状态时间就会随之改变,例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的。
find命令查询文件
列出当前目录下包含sysctl.conf的文件名称
[root@node ~]# find . -name “sysctl.conf” -exec ls -al {} ; -rw-r--r-- 1 root root 1234 Jul 15 2016 /etc/sysctl.conf
列出修改日期三天外文件并删除修改日期7天外的文件
[root@node ~]find -name "*" -type f -mtime +3 -exec ls -al {} ;
[root@node ~]find -name "*" -type f -mtime +7 -exec rm -rf {} ;
“-exec”表示每找到一个文件,则执行“-exec”和“;”之间的命令。“;”是格式分隔符,和前面的命令之间有一个空格
命令“rm {}”表示删除{}变量代表的文件,变量{}保存着当前匹配的文件名。
-mtime解释:
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
这里-mtime +1 为什么是48小时以外,而不是24小时以外呢,因为n只能是整数,比1大的下一个整数是2,所以是48小时以外的
下面来看 -mtime 1的输出结果:
[root@node ~]$ find ./* -name "*.arc" -mtime 1 -exec ls -l {} ;
说明:
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件
[root@node ~]$ find ./* -name "*.arc" -mtime 0 -exec ls -l {} ;
说明:
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件
[root@node ~]$ find ./* -name "*.arc" -mtime -1 -exec ls -l {} ;
解释:
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
date
获取当前日期
[root@node ~]# export DATE=`date +"%Y%m%d%H"`
[root@node ~]# echo $DATE
2014071309