您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > linux 下查看文件修改时间等
查看文件时间戳命令:statawk.txtFile:`awk.txt'Size:20Blocks:8IOBlock:4096regularfileDevice:801h/2049dInode:380730Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Access:2008-04-2601:50:44.000000000+0800Modify:2008-04-2601:48:18.000000000+0800Change:2008-04-2601:48:18.000000000+0800说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat*查看这个目录所有文件的状态。现在是要过滤出Modify的时间戳,并以yyyyMMddHHSS格式保存,则可以利用下面这条命令:statawk.txt|grep-iModify|awk-F.'{print$1}'|awk'{print$2$3}'|awk-F-'{print$1$2$3}'|awk-F:'{print$1$2$3}'输出结果:20080426014818修改文件时间与创建新文件:touch在介绍ls命令时,提到每个文件在Linux下面都会记录3个主要的修改时间:•modificationtime(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。•statustime(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。•accesstime(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取~/.bashrc,就会更新atime了。举例来说,我们来看一看/etc/man.config文件的时间。[root@linux~]#ls-l/etc/man.config-rw-r--r--1rootroot4506Apr819:11/etc/man.config[root@linux~]#ls-l--time=atime/etc/man.config-rw-r--r--1rootroot4506Jul1917:53/etc/man.config[root@linux~]#ls-l--time=ctime/etc/man.config-rw-r--r--1rootroot4506Jun2508:28/etc/man.config看到了吗?在默认的情况下,ls显示的是该文件的mtime,也就是这个文件的内容上次更改的时间。我的系统是在6/25安装的,因此,这个文件产生但状态更改的时间就回溯到那个时间点。因为刚才的范例中使用到这个文件,所以,它的atime就会变成刚刚使用的时间了。文件的时间很重要,因为如果误判文件时间,可能会造成某些程序无法顺利运行。那么,万一我发现了一个文件来自将来(很多时候会有这个问题的。我们在安装的时候,提到的GMT时间就是那个意思),该如何让该文件的时间变成“现在”的时刻呢?很简单,用touch命令即可。[root@linux~]#touch[-acdmt]文件参数:-a:仅修改accesstime。-c:仅修改时间,而不建立文件。-d:后面可以接日期,也可以使用--date=日期或时间-m:仅修改mtime。-t:后面可以接时间,格式为[YYMMDDhhmm]范例:范例一:新建一个空的文件。[root@linux~]#cd/tmp[root@linuxtmp]#touchtesttouch[root@linuxtmp]#ls-ltesttouch-rw-r--r--1rootroot0Jul1920:49testtouch#注意,这个文件的大小是0。在默认的状态下,如果touch后面接文件,#则该文件的3个时间(atime/ctime/mtime)都会更新为当前时间。若该文件不存在,#则会主动建立一个新的空文件。例如上面这个例子。范例二:将~/.bashrc复制成为bashrc,假设复制完全的属性,检查其日期。[root@linuxtmp]#cp~/.bashrcbashrc[root@linuxtmp]#llbashrc;ll--time=atimebashrc;ll--time=ctimebashrc-rwxr-xr-x1rootroot395Jul411:45bashrc==这是mtime-rwxr-xr-x1rootroot395Jul1920:44bashrc==这是atime-rwxr-xr-x1rootroot395Jul1920:53bashrc==这是ctime#在这个案例中,我们使用了;命令分隔符,它的用法我们会在Bashshell中提到。#此外,ll是ls-l的命令别名,这个也会在bashshell中再次提及,#当前可以简单地想成,ll就是ls-l的简写。至于;则是同时发出两个命令,#且让两个命令“按顺序”执行的意思。上面的结果中可以看到,该文件更改的日期#Jul411:45,但是atime与ctime不一样。范例三:修改案例二的bashrc文件,将日期调整为两天前。[root@linuxtmp]#touch-d2daysagobashrc[root@linuxtmp]#llbashrc;ll--time=atimebashrc;ll--time=ctimebashrc-rwxr-xr-x1rootroot395Jul1721:02bashrc-rwxr-xr-x1rootroot395Jul1721:02bashrc-rwxr-xr-x1rootroot395Jul1921:02bashrc#与上一个范例比较,本来是19日的变成了17日了(atime/mtime)。#不过,ctime并没有跟着改变。范例四:将上个范例的bashrc日期改为2005/07/152:02。[root@linuxtmp]#touch-t0507150202bashrc[root@linuxtmp]#llbashrc;ll--time=atimebashrc;ll--time=ctimebashrc-rwxr-xr-x1rootroot395Jul1502:02bashrc-rwxr-xr-x1rootroot395Jul1502:02bashrc-rwxr-xr-x1rootroot395Jul1921:05bashrc#注意,日期在atime与mtime都改变了,但ctime则是记录当前的时间。通过touch命令,可以轻松地修改文件的日期与时间。并且,也可以建立一个空文件。不过,要注意的是,即使复制一个文件,复制所有属性,但也没有办法复制ctime属性。ctime可以记录文件最近改变状态(status)的时间。无论如何,还是要说明一下,我们平时看的文件属性中,比较重要的还是mtime。我们关心的常常是这个文件的“内容”是什么时候更改的。touch这个命令最常用的情况是:•建立一个空文件。•将某个文件日期修改为当前日期(mtime与atime)。与文件相关的几个时间:1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls-l列出的时间就是这个时间。3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令文件名。
本文标题:linux 下查看文件修改时间等
链接地址:https://www.777doc.com/doc-2884619 .html