Linux常用命令之查找命令find——细说-atime,-mtime,-ctime
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux常⽤命令之查找命令find——细说-atime,-mtime,-ctime
我们知道 Linux⾥⾯⼀切皆⽂件,那么我们能否查看⼀个⽂件是何时创建的呢?答案是否定的。
那我们可以知道些⽂件关于时间的什么信息呢?那就不得不说⽂件状态的三个时间了,它们分别是 -atime, -ctime 和 -mtime。
先让我们来看⼀个Linux下的⽂件信息:
我们可以从中看到,关于时间的信息有三个:最近访问时间 access time (-atime)、最近更改时间 modify time (-mtime)和最近状态改动时间 change time(-ctime),当然我们也看到了创建时间那⼀项为空⽩,也证实了Linux系统下是⽆法查看⽂件的创建时间的。
下⾯具体解释这三个时间:
atime : 它代表着最近⼀次访问⽂件的时间,显⽰⼀个⽂件的内容或者运⾏⼀个shell脚本会更新⽂件的atime。
可⽤ls -lu命令查看。
有⼀个要注意的就是,在kernel版本2.6.30之前,linux的核⼼开发⼈员针对Ext3/Ext4⽂件系统的性能进⾏了讨论,其中包括atime。
在kernel 2.6.30之前,⽂件系统中默认会及时的更新atime,⽽在此之后的版本⾥,只有发⽣以下三种情况之⼀才会更新atime
1. 将分区mount的挂载的时候指定采⽤⾮relatime⽅式
2. atime⼩于ctime或者⼩于mtime的时候
3. 本次的access time和上次的atime超过24个⼩时
mtime : 它代表着最近⼀次⽂件内容被修改的时间。
可⽤ls -l 命令查看。
ctime : 它代表着最近⼀次⽂件状态改变的时间 ,是status change time,是在写⼊⽂件、更改所有者、权限或链接设置时随 Inode 的内容更改⽽更改,即⽂件状态最后⼀次被改变的时间。
可⽤ls -lc 命令查看。
演⽰⼀下命令的运⾏结果:
现在来看⼀下查看⽂件之后atime有什么变化
可以看到,在执⾏查看命令cat之后,⽂件的atime进⾏了更新。
那如果对⽂件内容进⾏了更改呢?
在更改了⽂件内容之后,在对⽂件的详细信息进⾏查看,对⽐之后我们可以看到,mtine和ctime都改变了,那这意味着mtime和ctime是⼀样的么?前⾯已经说过,ctime是指 inode 的改变。
那既然我们对⽂件的内容进⾏了更改,那它的mtime已经改变,所以ctime也就会改变咯。
也就是说只要mtime改变,ctime就⼀定会改变。
那怎样使得ctime改变⽽其他不变呢?我们可以通过改变⽂件的权限、⽤户、所属组等来实现。
下⾯举例:
当然,我们既然可以查看当前的atime、mtime、ctime,那肯定也可以查看⼏天前或者⼏天之内被改过或者访问过的⽂件。
Linux为我们提供了⼀个简便的查询⽅式,那就是 +n 和 -n。
下⾯以 -mtime 举例说明:
-mtime n : n为数字,意思为在n天之前的“⼀天之内”被更改过内容的⽂件
-mtime +n : 列出在n天之前(不含n天本⾝)被更改过内容的⽂件名
-mtime -n : 列出在n天之内(含n天本⾝)被更改过内容的⽂件名
例如:将系统24⼩时内更改过内容的档案列出。
find / -mtime 0
那么,找 “5天之内被更改过的档案名” 就是find / -mtime -5 ,找“5天前的那⼀天被更改过的档案名” 就是 find / -mtime 5 ,找“5天之前被更改过的档案名” 就是 find / -mtime +5。
我们可以看出有没有 “+,-”的差别是很⼤的。
下⾯⽤图来说明⼀下:
由这个时光轴我们可以知道,最右边为当前时,+5 代表⼤于等于 6 天前的档案名, -5 代表⼩于等于 5 天内的档案名,5 则是代表 5-6 那⼀天的档案名。