彻底搞明白find命令mtime含义和用法

【引言】​

大家知道,在写shell脚本时,经常会crontab定时删除一些文件,会经常用到 find 命令的-mtime参数,之前只是在用,没具体理解,今天集中时间学习下。

 

Linux里面一切皆文件,想了解文件状态时间,就得熟悉 find命令中的-atime, -ctime,-mtime这三个参数,其中-mtime用的更多。

 

使用命令stat先看下文件或者目录的信息:

[root@localhost products]# stat oracle19c/

  File: ‘oracle19c/’

  Size: 4096            Blocks: 8          IO Block: 4096   directory

Device: fd02h/64770d    Inode: 37224449    Links: 68

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:unlabeled_t:s0

Access: 2020-06-30 13:46:49.819926683 +0800

Modify: 2020-06-30 11:12:17.099937512 +0800

Change: 2020-06-30 11:12:17.099937512 +0800

 Birth: -

 

可以看到,关于时间信息有三个:最近访问时间 access time (-atime)、最近更改时间modify time-mtime)和 最近状态改动时间 change time-ctime);但也看到了Birth创建时间一项为空,说明Linux系统下是无法查看文件的创建时间的。

 

先看下man find中的解释,大家直接看英文,这里不过多解释

-atime n

File  was  last  accessed  n*24 hours ago.  When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to  have been accessed at least two days ago.

 

-ctime n

File's status was last changed n*24 hours ago.  See the comments for -atime to understand how rounding affects the interpretation of file status change times.

 

-mtime n

File’s data was last modified n*24 hours ago.See the  comments  for  -atime  to  understand  how rounding affects the interpretation of file modification times.

 

解释-atime, -ctime 和 -mtime参数含义:

atime: 代表最近一次访问文件的时间,显示一个文件的内容或者运行一个shell脚本会更新文件的atime。可用ls -lu命令查看。在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 命令查看。

 

在unix或linux环境中经常会用到find -mtime来找某时间点之前的文件,并在此基础上进行处理(如定期删除过期文件);

如何更好的理解find -mtime +N/-N/N,这里小结下:

-mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件

-mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名

-mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名

 

举个栗子:find $HOME -mtime 0

Search  for  files  in  your home directory which have been modified in the last twenty-four hours.  This command works this way because the time since each file was last modified is divided by 24 hours and  any remainder  is  discarded.   That means that to match -mtime 0, a file will have to have a modification in the past which is less than 24 hours ago.

 

将根目录下24小时内更改过内容的文件列出:

find / -mtime 0

 

场景举例:

找“5天之内被更改过的档案名”find / -mtime -5 ;

找“5天前的那一天被更改过的档案名”find / -mtime 5 ;

找“5天之前被更改过的档案名”find / -mtime +5。

 

下图来表现更直观,以便理解记忆。

 

由以上时间轴可以看出,最右边为当前时,+5 代表大于等于 天前的档案名, -5 代表小于等于 天内的档案名,则是代表 5-6 那一天的档案名。

 

【参考】

http://hi.baidu.com/ljm0211/item/d46591307a4985b9623aff33

【参考】

https://www.cnblogs.com/qiaopei/p/5515189.html


以下为个人公众号“一森咖记”,欢迎关注。

  • 22
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答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命令时,要根据具体情况选择合适的参数并进行设置,以达到最优的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值