linux下find命令-atime,-ctime,-mtime真正含义

linux下的-atime,-ctime,-mtime含义
我们经常会在论坛或者群里面被问到,在linux或者unix下如何查看某文件的创建日期?
经常又会有人说用find命令加选项-ctime,其实这里的-ctime并非是create time,而是change time。
在linux或者unix这类操作系统,并没有为我们保存文件的创建日期。

[@[email protected]]

linux下的-atime,-ctime,-mtime含义
我们经常会在论坛或者群里面被问到,在linux或者unix下如何查看某文件的创建日期?
经常又会有人说用find命令加选项-ctime,其实这里的-ctime并非是create time,而是change time。
在linux或者unix这类操作系统,并没有为我们保存文件的创建日期。
我们可以先来看看linux系统里文件的状态信息,下面这个文件是我一周前创建的:
[[email protected] ~]# stat 3
File: “3”
Size: 15 Blocks: 8 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 489602 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-07-17 22:14:55.000000000 +0800
Modify: 2012-07-17 15:22:45.000000000 +0800
Change: 2012-07-17 15:22:45.000000000 +0800
可以看到,文件状态里有三个时间,分别是access,modify,change。
下面我们再来看看find命令下的这几个选项:
[[email protected] admin]$ 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.
-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. 
-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.

发现三个时间正好与文件的三个时间状态相同,而且帮助也已经很明显的告诉了我们其具体含义:
atime的意思是access time,即文件的最近的一次访问时间,+n意思为查找n天以前的文件,-n为查找n天以内的文件
例如有一个文件data4.txt,查看一下它的状态:
[[email protected] ~]$ stat data4.txt
File: `data4.txt‘
Size: 49 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 458037 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ oracle) Gid: ( 500/oinstall)
Access: 2012-07-10 11:46:05.000000000 +0800Modify: 2012-07-10 11:44:37.000000000 +0800
Change: 2012-07-10 11:44:37.000000000 +0800
我们来查看一下它的内容:
[[email protected] ~]$ more data4.txt 
"SCOTT",12,"F444"
"BRENTT",43,"54GSS"
"SYS",4566
再来看看文件的状态:
[[email protected] ~]$ stat data4.txt 
File: `data4.txt‘
Size: 49 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 458037 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ oracle) Gid: ( 500/oinstall)
Access: 2012-07-22 23:21:10.000000000 +0800Modify: 2012-07-10 11:44:37.000000000 +0800
Change: 2012-07-10 11:44:37.000000000 +0800
可以发现,只要你查看了文件的内容,无论是more,cat,vi,那么文件的access time都会更新。

mtime比较好理解,为modify time,即文件数据最新的修改时间,指的就是文件内容的最新修改时间。
[[email protected] ~]$ stat ctl1.txt
File: `ctl1.txt‘
Size: 288 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 458031 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ oracle) Gid: ( 500/oinstall)
Access: 2012-07-22 23:46:05.000000000 +0800
Modify: 2012-07-10 11:44:05.000000000 +0800Change: 2012-07-10 11:44:05.000000000 +0800
对文件进行一下编辑:
[[email protected] ~]$ echo "" >>ctl1.txt
[[email protected] ~]$ stat ctl1.txt 
File: `ctl1.txt‘
Size: 291 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 458070 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ oracle) Gid: ( 500/oinstall)
Access: 2012-07-22 23:46:05.000000000 +0800
Modify: 2012-07-22 23:46:31.000000000 +0800
Change: 2012-07-22 23:46:31.000000000 +0800
发现文件的modify和change时间都变化了,change time 下面讨论。

ctime的意思是change time,文件状态最新改变的时间。是文件的status change time,何为文件的status呢?
我们都知道文件有一些个基本的属性,权限,用户,组,大小,修改时间等,只要是这些信息变化了,那么ctime都会发生变化,
所以上面修改文件内容时为何ctime会变化,因为其mtime已经变化了,mtime也是文件状态的一个。
文件状态可以通过ls -l 查看:
[[email protected] ~]# ls -l 3
-rw-r--r-- 1 root root 15 07-17 15:22 3
下面这个文件的Change时间为2012-07-17:
[[email protected] ~]# stat 3
File: “3”
Size: 15 Blocks: 8 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 489602 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-07-17 22:14:55.000000000 +0800
Modify: 2012-07-17 15:22:45.000000000 +0800
Change: 2012-07-17 15:22:45.000000000 +0800我们改变一下它的权限:
[[email protected] ~]# chmod 755 3
再来看看它的Change time:
[[email protected] ~]# stat 3
File: “3”
Size: 15 Blocks: 8 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 489602 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-07-17 22:14:55.000000000 +0800
Modify: 2012-07-17 15:22:45.000000000 +0800
Change: 2012-07-22 23:17:40.000000000 +0800再改一下它的用户:
[[email protected] ~]# chown oracle.root 3
[[email protected] ~]# stat 3
File: “3”
Size: 15 Blocks: 8 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 489602 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 500/ oracle) Gid: ( 0/ root)
Access: 2012-07-17 22:14:55.000000000 +0800
Modify: 2012-07-17 15:22:45.000000000 +0800
Change: 2012-07-22 23:33:59.000000000 +0800再改变一下它的所属组:
[[email protected] ~]# chgrp oinstall 3
[[email protected] ~]# ll
总计 4
-rwxr-xr-x 1 oracle oinstall 15 07-17 15:22 3
[[email protected] ~]# stat 3
File: “3”
Size: 15 Blocks: 8 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 489602 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 500/ oracle) Gid: ( 500/oinstall)
Access: 2012-07-17 22:14:55.000000000 +0800
Modify: 2012-07-17 15:22:45.000000000 +0800
Change: 2012-07-22 23:36:14.000000000 +0800发现,只要是修改ls -l 里面的任何信息,那么change time都会发生变化。

总结:find命令中的ctime并非是创建时间,而是文件状态改变时间。文件的时间三属性分别为access time,modify time和change time.

http://blog.itpub.net/26675752/viewspace-1058878/

时间: 2024-12-14 18:48:58

linux下find命令-atime,-ctime,-mtime真正含义的相关文章

Linux下find , atime, ctime,mtime

linux下的ctime指的是change time,atime指的是access time,mtime指的是modify time(意思是更改时间) mtime和ctime的区别在于,只有修改了文件的内容,才会更新文件的mtime,而对文件更名,修改文件的属性等操作,只会更新ctime. 举例说明: 对文件进行mv操作,mtime不变,ctime更新:编辑文件内容,mtime和ctime同时修改.其他操作的影响,但是我发现对文件执行touch操作,会同时修改mtime和ctime,所以具体修改

find命令下的atime,ctime,mtime

Linux下的find命令在目录结构中搜索文件,并执行指定的操作.linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下find命令下的三个时间参数atime,ctime,mtime. atime:access time,最近一次访问时间,当使用这个文件的时候就会更新这个时间. mtime:modify time,最近一次文件内容更改时间,当修改文件内容数据时,就会更改这个时间. ctime:change time,最近一次

Linux时间戳atime ctime mtime区别及相关命令

首先简单讲一下Linux时间戳atime ctime mtime的概念 atime:Access Time 最后一次访问文件(读取或执行)或目录的时间 mtime:Modofy Time 最后一次修改文件(内容)或目录(内容)的时间 ctime:Change Time 最后一次改变文件(属性)或目录(属性)的时间 atime ctime mtime的区别 atime access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内

linux下find命令的使用

find find命令是我们常用的查找文件的命令,它是一个非常强大的查找指令,但相对话费的时间会很长,并且非常消耗资源. 语法: find [路径] [参数] [表达式] [-exec -ok ...] 指令 {} \; {}     代表find找到的文件: \      禁止转义: {}  \; 之间是有空格的: ;      表示本指令结束 -exec  find命令对匹配的文件执行该参数所给出的shell命令: -ok    和-exec的作用相同,只不过是一种更为安全的模式来执行该参数

Linux下find命令详解

[概述] find命令是Linux中一个很强大的查找命令,用于在目录结构中搜索文件并执行指定操作.只要具有相应的权限,即使系统中含有网络文件系统(NFS),find 命令在该文件系统中同样有效.由于find命令功能强大,常被用来在大文件系统中查找文件,这会话费很长时间,所以人们更倾向于把它放在后台执行.接下来我们看看find命令的具体用法. [1]命令格式   find pathname -options[-print -exec -ok ...] find 查找路径 -命令参数 [2]命令功能

Linux下find命令详情

Linux下find命令在目录结构中搜索文件,并执行指定的操作.linux下find命令提供了相当多的查找条件,功能很强大,所以它的选项也很多,其中有许多的选项都值得我们深入的了解学习. 命令格式:find pathname -options [-print -exec -ok ...]    命令功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)    命令参数:        pathname:find命令所查找的目录路径.例如,用.来表示当前目录,用/来表示系统根目录.    

linux下find命令和文件的三种时间

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 1.命令参数:     pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.   -print: find命令将匹配的文件输出到标准输出

Linux下 find 命令用法

Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' { } \;,注意{ }和\:之间的

linux下find命令使用举例、

为什么要使用find? 在linux一切皆文件的背景下,find能精确地匹配到你所需要查找到的文件,在linux系统中,也有同类的命令能查找文件的所在位置,比如:locate,但是locate有很多的局限性,它只支持模糊的查找,相对于find实在逊色得太多.先说一下locate的使用方法: locate -l  filename 查找filename所在文件的所有行 locate -n filename  查找filename所在的前n行 下面详细说一下find: 1.根据文件来查找:find