文件时间戳修改touch和查看stat和ls --time

查看文件时间戳命令:stat awk.txt
File: `awk.txt‘
Size: 20  Blocks: 8  IO Block: 4096  regular file
Device: 801h/2049d  Inode: 380730  Links: 1
Access: (0644/-rw-r--r--) Uid: (  0/  root)  Gid: (  0/  root)
Access: 2008-04-26 01:50:44.000000000 +0800
Modify: 2008-04-26 01:48:18.000000000 +0800
Change: 2008-04-26 01:48:18.000000000 +0800

说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。
现在是要过滤出Modify的时间戳,并以yyyyMMddHHSS格式保存,则可以利用下面这条命令:
stat awk.txt | grep -i Modify | 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个主要的修改时间:
• modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
• status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
• access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。
举例来说,我们来看一看/etc/man.config文件的时间。

[[email protected] ~]# ls -l /etc/man.config-rw-r--r-- 1 root root 4506 Apr 8 19:11 /etc/man.config[[email protected] ~]# ls -l --time=atime /etc/man.config-rw-r--r-- 1 root root 4506 Jul 19 17:53 /etc/man.config[[email protected] ~]# ls -l --time=ctime /etc/man.config-rw-r--r-- 1 root root 4506 Jun 25 08:28 /etc/man.config

看到了吗?在默认的情况下,ls显示的是该文件的mtime,也就是这个文件的内容上次更改的时间。我的系统是在6/25安装的,因此,这个文件产生但状态更改的时间就回溯到那个时间点。因为刚才的范例中使用到这个文件,所以,它的atime就会变成刚刚使用的时间了。

文件的时间很重要,因为如果误判文件时间,可能会造成某些程序无法顺利运行。那么,万一我发现了一个文件来自将来(很多时候会有这个问题的。我们在安装的时候,提到的GMT时间就是那个意思),该如何让该文件的时间变成“现在”的时刻呢?很简单,用touch命令即可。

[[email protected] ~]# touch [-acdmt] 文件参数:-a : 仅修改access time。-c : 仅修改时间,而不建立文件。-d : 后面可以接日期,也可以使用 --date="日期或时间"-m : 仅修改mtime。-t : 后面可以接时间,格式为 [YYMMDDhhmm]范例: 范例一:新建一个空的文件。[[email protected] ~]# cd /tmp[[email protected] tmp]# touch testtouch[[email protected] tmp]# ls -l testtouch-rw-r--r-- 1 root root    0 Jul 19 20:49 testtouch# 注意,这个文件的大小是0。在默认的状态下,如果touch后面接文件,# 则该文件的3个时间(atime/ctime/mtime)都会更新为当前时间。若该文件不存在,# 则会主动建立一个新的空文件。例如上面这个例子。 范例二:将 ~/.bashrc复制成为bashrc,假设复制完全的属性,检查其日期。[[email protected] tmp]# cp ~/.bashrc bashrc[[email protected] tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc-rwxr-xr-x 1 root root 395 Jul 4 11:45 bashrc <==这是mtime-rwxr-xr-x 1 root root 395 Jul 19 20:44 bashrc <==这是atime-rwxr-xr-x 1 root root 395 Jul 19 20:53 bashrc <==这是ctime# 在这个案例中,我们使用了 ; 命令分隔符,它的用法我们会在Bash shell中提到。# 此外,ll是ls -l的命令别名,这个也会在bash shell中再次提及,# 当前可以简单地想成,ll就是ls -l的简写。至于 ; 则是同时发出两个命令,# 且让两个命令“按顺序”执行的意思。上面的结果中可以看到,该文件更改的日期# Jul 4 11:45,但是atime与ctime不一样。 范例三:修改案例二的bashrc文件,将日期调整为两天前。[[email protected] tmp]# touch -d "2 days ago" bashrc[[email protected] tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc-rwxr-xr-x 1 root root 395 Jul 17 21:02 bashrc-rwxr-xr-x 1 root root 395 Jul 17 21:02 bashrc-rwxr-xr-x 1 root root 395 Jul 19 21:02 bashrc# 与上一个范例比较,本来是19日的变成了17日了(atime/mtime)。# 不过,ctime并没有跟着改变。 范例四:将上个范例的bashrc日期改为2005/07/15 2:02。[[email protected] tmp]# touch -t 0507150202 bashrc[[email protected] tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc-rwxr-xr-x 1 root root 395 Jul 15 02:02 bashrc-rwxr-xr-x 1 root root 395 Jul 15 02:02 bashrc-rwxr-xr-x 1 root root 395 Jul 19 21:05 bashrc# 注意,日期在atime与mtime都改变了,但ctime则是记录当前的时间。

通过touch命令,可以轻松地修改文件的日期与时间。并且,也可以建立一个空文件。不过,要注意的是,即使复制一个文件,复制所有属性,但也没有办法复 制ctime属性。ctime可以记录文件最近改变状态(status)的时间。无论如何,还是要说明一下,我们平时看的文件属性中,比较重要的还是 mtime。我们关心的常常是这个文件的“内容”是什么时候更改的。
touch这个命令最常用的情况是:
• 建立一个空文件。
• 将某个文件日期修改为当前日期(mtime与atime)。

与文件相关的几个时间:

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。

时间: 2024-10-02 01:02:43

文件时间戳修改touch和查看stat和ls --time的相关文章

linux下touch命令修改文件时间戳

linux的touch命令用来修改文件时间戳,或者新建一个不存在的文件. 上图中,access.modify.change分别是访问时间.修改时间.改变时间,即为文件的时间戳. 1.命令格式: touch [选项]... 文件名... 2.命令参数: -a   或--time=atime或--time=access或--time=use  只更改存取时间. -c   或--no-create  不建立任何文档. -d  使用指定的日期时间,而非现在的时间. -f  此参数将忽略不予处理,仅负责解

创建文件和修改时间戳——touch

linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a   或--time=atime或--time=access或--time=use  只更改存取时间. -c   或--no-create  不建立任何文档. -d  使用指定的日期时间,而非现在的时间. -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题. -m   或--ti

touch 修改文件时间戳,或者新建一个不存在的文件 - 副本

linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a   或--time=atime或--time=access或--time=use  只更改存取时间. -c   或--no-create  不建立任何文档. -d  使用指定的日期时间,而非现在的时间. -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题. -m   或--ti

linux文件时间的查看和修改touch

1. linux文件的时间 linux下文件时间主要有下面三种: 1.1 modification time(mtime) 文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改. 使用ls -l查看,默认显示时间为mtime $ ls -l uconv.h -rw-rw-r-- 1 work work 1808 Jul 23 2013 uconv.h 1.2 status time(ctime) 文件状态status的修改时间,如文件的权限和属性修改时更新这个时间. 使用

一天一个linux基础命令之修改文件时间戳touch

touch  修改时间戳(常用于创建空文件) 1.命令格式 touch [options]File ... 2.命令功能 用于修改文件的时间戳.访问时间.修改时间.改变时间.如果什么参数也不加默认创建一个空文件 Linux文件时间戳(timestamp): 访问时间:最近一次被访问(被读) access 修改时间:写数据  modify 改变的文件的内容 改变时间:改变元数据(文件的属性)  change,metadata,元数据  改变的文件的属性 改变时间会自动变化,当文件访问时,或者修改文

linux文件之touch命令及文件时间戳

一,在将touch命名前先看看文件关于时间的属性.通过stat命令查看文件如下: [[email protected] test]# stat f1  File: `f1'  Size: 34              Blocks:8          IO Block: 4096   regular file Device: fd00h/64768d    Inode: 72757       Links: 1 Access: (0640/-rw-r-----)  Uid: (   0/  

liunx入门之文件的基础操【查看、操作和查找】

在这里特别感谢马哥教育系列课程:[马哥出品高薪Linux视频课程]-Linux入门.[马哥出品高薪Linux视频课程2]--Linux运维基础进阶和shell入门和linux开源中文社区linux.cn之RHCSA系列.RHCE系列课程,所有的来源均来自以上几处的整理,纯属个人学习.工作之需,大侠绕道,不喜勿喷! 本节命令提示 help.ls.file.cat.tac. head .tail   cut.sort.echo.stat.man.info cd mkdir cp touch  rm 

更新文件时间戳或创建新文件命令

更新文件时间戳或创建新文件 touch 文件有三个主要变动时间: modification time (mtime): 当文件内容数据被改变时,更新时间 status time (ctime): 当文件权限和属性被改变时,更新时间 access time (atime): 当文件被访问时,更新时间 touch [-acdmt] 文件 参数: -a: 仅修改访问时间 -c: 仅修改文件的时间,若该文件不存在则不创建新文件 -d: --date=日期和时间 指定要设定的修改日期时间 -m: 仅修改m

Linux - 文件时间戳

概述 简介 linux 文件时间戳 背景 最近感觉很消极的样子 心情不好加不知道写啥 随便水一水 能水的就那么多, 水一次, 少一次 环境 os centos7 1. 时间戳 概述 简述 时间戳 linux 的文件结构 组成 inode 记录文件元数据 数据 记录文件内容 时间戳 位置 inode 中 机制 创建 文件创建时, 三个时间相同 改变 执行特定的动作, 会触发相应时间的改变 内容 atime(access) 访问时间 文件被读取到 内存 里, 就会改变这个时间 如果没有读, 直接 a