find命令之atime/ctime/mtime的用法学习

本文主要参考了:https://blog.csdn.net/abcdef0966/article/details/7607545,感谢原作者abcdef0966。本文主要是根据原文的介绍,进行了相应的测试验证,希望帮助大家更好的理解,同时也作为自己的一个学习记录。

Find命令是我们使用非常频繁的linux命令,可以非常快速地帮我们搜索到符合筛选条件的文件,这里面有三个文件时间的相关参数:atime/ctime/mtime,可以帮我们按照相关的时间属性来搜索相应的文件。我们可以通过stat命令查看一个文件的这三个时间属性值,如下所示:

File: ‘kylin.log.2019-07-14’
  Size: 5782990183	Blocks: 11294912   IO Block: 4096   regular file
Device: 808h/2056d	Inode: 40635918    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 8194/    nrpt)   Gid: ( 1002/ netease)
Access: 2019-07-14 00:00:00.241071498 +0800
Modify: 2019-07-14 23:59:59.615788870 +0800
Change: 2019-07-15 00:00:00.623800909 +0800
 Birth: -

关于这三个时间参数的具体含义,可以通过man find来查看:

  • atime,File was last accessed
  • ctime,File's status was last changed
  • mtime,File's data was last modified

关于在什么情况下,这三个值会发生变化,这里不展开介绍。本文主要介绍的是参数n的用法以及相关的含义。通过网上搜索的一些资料可知,n是以24h为单位,即1天。n=1表示1天,即24h。关于n前面的符号+/-以及相关的用法表示如下的含义:

find . -mtime +n:搜索文件最后一次修改时间,是发生在距离当前时间的(n+1)*24h以前,即[-∞,(n+1)*24]
find . -mtime n:搜索文件最后一次修改时间,是发生在距离当前时间的[(n+1)*24,n*24]区间内的
find . -mtime -n:搜索文件最后一次修改时间,是发生在n*24以内的,即[n*24,当前时间]

我们可以通过下图来形象地理解不同符号的n所表示的含义:

下面我们将根据实际的例子,来验证一下上面的解释是否正确。我们将当前时间定为:2019-07-15 16:00,n设置为2。搜索的文件是一批日志文件,每天23:59会生成以当天日志结尾命令的新文件:

-rw-r--r-- 1 nrpt netease 2.6G Jul  5 23:59 kylin.log.2019-07-05
-rw-r--r-- 1 nrpt netease 2.9G Jul  6 23:59 kylin.log.2019-07-06
-rw-r--r-- 1 nrpt netease 3.3G Jul  7 23:59 kylin.log.2019-07-07
-rw-r--r-- 1 nrpt netease 3.6G Jul  8 23:59 kylin.log.2019-07-08
-rw-r--r-- 1 nrpt netease 3.9G Jul  9 23:59 kylin.log.2019-07-09
-rw-r--r-- 1 nrpt netease 4.2G Jul 10 23:59 kylin.log.2019-07-10
-rw-r--r-- 1 nrpt netease 4.5G Jul 11 23:59 kylin.log.2019-07-11
-rw-r--r-- 1 nrpt netease 4.9G Jul 12 23:59 kylin.log.2019-07-12
-rw-r--r-- 1 nrpt netease 5.2G Jul 13 23:59 kylin.log.2019-07-13
-rw-r--r-- 1 nrpt netease 5.4G Jul 14 23:59 kylin.log.2019-07-14

此时,将具体的数据对应到上图中的各个参数,我们可以得到如下所示的图:

如果我们执行:find . -ctime +2,表示搜索文件状态最后修改时间为2019-07-12 16:00之前的所有文件,即如下所示的结果:

./kylin.log.2019-07-09
./kylin.log.2019-07-10
./kylin.log.2019-07-11
./kylin.log.2019-07-05
./kylin.log.2019-07-08
./kylin.log.2019-07-06
./kylin.log.2019-07-07

如果我们执行:find . -ctime 2,表示搜索文件状态最后修改时间在[2019-07-12 16:00,2019-07-13 16:00]区间内的所有文件,即如下所示的结果:

./kylin.log.2019-07-12

如果我们执行:find . -ctime -2,表示搜索文件状态最后修改时间在2019-07-13 16:00到当前时间点内的所有文件,也可以理解为最近2天内创建的文件,即如下所示的结果:

./kylin.log.2019-07-14
./kylin.log.2019-07-13

关于这三个区间的开闭问题,个人觉得应该是(-∞,(n+1)*24),[(n+1)*24,n*24],(n*24,当前时间)。本人这里没有验证过,大家如果感兴趣的话,可以自行验证。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: find命令中的ctime和mtime是两个时间戳参数,用于指定查找文件的时间范围。 ctime是指文件状态改变的时间,包括文件的权限、所有权、链接数等信息的改变。而mtime是指文件内容修改的时间,即文件的最后修改时间。 在find命令中,可以使用-ctime和-mtime参数来指定查找文件的时间范围。例如,-ctime +7表示查找状态改变时间在7天前的文件,而-mtime -3表示查找内容修改时间在3天内的文件。 ### 回答2: find命令是一个在Linux或Unix系统中最为常用的命令之一,用于在指定目录及其子目录下查找符合条件的文件或目录。find命令提供了丰富的选项参数,其中包括ctime和mtime两个参数。 ctime是指文件的change time,即文件状态改变的时间。当文件被创建、修改时,都会影响该文件的ctime值。而当文件被删除或者硬链接被删除时,也会改变文件的ctime值。所以,ctime主要是指文件状态变更的时间,而不仅仅是文件内容的变更时间。 在使用find命令时,-ctime选项可以根据文件状态变更的时间来查找文件。例如: find /mydir -ctime -1 #在/mydir目录下查找一天之内状态改变过的文件 这个命令会在/mydir目录下查找一天之内状态改变过的文件,包括创建、修改和删除的文件。 mtime是指文件的modification time,即文件内容修改的时间。当文件的内容被修改时,会改变文件的mtime值。而文件的创建、删除或硬链接的删除并不会影响文件的mtime值。 在使用find命令时,-mtime选项可以根据文件内容修改的时间来查找文件。例如: find /mydir -mtime -1 #在/mydir目录下查找一天之内内容修改过的文件 这个命令会在/mydir目录下查找一天之内内容修改过的文件。 总之,ctime和mtime是两个非常有用的选项参数,可以帮助我们在使用find命令时更精确地查找文件。需要注意的是,这两个参数都是以天为单位的,因此在使用时需要考虑清楚单位和范围。 ### 回答3: find命令是一个非常常用且强大的命令,用于在Linux系统中查找文件和目录,并根据指定的条件进行操作。其中,ctime和mtime是两个非常重要的参数,用于设置查找文件时的筛选条件。 ctime和mtime都是指文件的时间戳,即文件的创建时间和修改时间。但是它们之间有一些区别。 ctime表示文件的状态改变时间(Status Change Time),也就是文件的属性信息最后一次改变的时间,包括文件的权限、拥有者、所属组、链接等信息的变更。例如,当我们使用chmod命令修改文件权限时,文件的ctime就会被更新。另外,当文件被创建或删除时,它的ctime也会被更新。 而mtime则表示文件的修改时间(Modify Time),也就是文件内容最后一次被修改的时间,包括文件的添加、删除数据等操作。当我们使用编辑器修改文件内容时,文件的mtime就会被更新。 在实际应用中,我们可以使用find命令,例如: 1. 按照文件修改时间查找文件 当我们需要查找一段时间内被修改过的文件时,我们可以使用以下的命令: find / -mtime -7 -type f 上面的命令表示在“/”目录下查找7天内被修改过的所有文件,其中-type f表示只查找文件类型的文件,不包括目录。 2. 按照文件状态改变时间查找文件 当我们需要查找一段时间内被属性修改过的文件时,我们可以使用以下的命令: find / -ctime -7 -type f 上面的命令表示在“/”目录下查找7天内属性被修改过的所有文件,其中-type f表示只查找文件类型的文件,不包括目录。 总之,ctime和mtime是两个非常实用的参数,可以帮助我们更加精准地查找和操作文件。需要注意的是,在使用find命令时,要根据具体情况选择合适的参数并进行设置,以达到最优的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值