Linux文件属性以及使用touch命令修改文件的时间戳

文件属性的分类:

linux 文件主要包含两类数据:
元数据:meatadata
数据:data

元数据

元数据即用来描述数据的数据
使用stat命令可以显示文件的元数据,元数据包含如下可用信息:

file,文件名
Size.文件大小(单位B)
Blocks,文件所占扇区个数,为8的倍数(通常的linux扇区大小为512B,连续8个扇区为一个block,所以通常情况下,一个block的大小为4K)
IO block:IO块的大小
regular file:普通文件
Inode:文件的Inode号
Links:硬链接次数
Access:权限
Uid:(属主id/属主名)
Gid:(属组id/属组名)
Access:最后访问的时间
Modify:数据改动的时间
Change:元数据改动的时间

时间戳:
	Access:(Access Time:atime),是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容。使用cat命令显示文件内容;使用cp命令把改文件(即来源文件)复制成其他文件;或者在这个文件上运用gre、sed、more、less、tail、head等命令,凡是读取文件的操作,均改为边文件的Access Time
	Modify:(Modify Time:mtime),是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的Modify time,平时我们使用ls -l查看文件是,显示的时间就是Modify time
	Change:(Change Time:ctime),是指文件属性或文件位置改动的时间,如:使用chmod、chown、mv指令集;使用ln做文件的硬连接,都会该表文件的Change Time
修改文件的时间
可使用touch命令修改文件的时间
在使用touch命令时,如果touch命令时,如果其后跟了一个文件名,且这个文件不存在,这时,touch将创建一个新文件,如下:

[root@oracle logs]# touch file

但是我们此时只想修改文件的时间而非创建文件,这是就可以使用touch的-c选项。

touch命令介绍:

touch命令在man文档中的解释是:touch - 修改文件的时间戳记.'
touch语法格式:touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)...
用法描述
   touch  修改每个指定文件   file    的存取(access)和/或修改(modification)时间戳记.    除非使用-r或-t选项,这些时间戳记都将修改为当前的时间。使用-r选项时,这些戳记将按照文件  ref_file(参照文件)  的时间戳记来修改(即变得和ref_file时间戳记值相同).  使用-t选项,则这些戳记将按照给定的时间值  time进行修改.同时使用或同时不使用选项-a和-m,存取和修改两个戳记都将被更改.若只使用选项-a,则只修改存取戳记.同样,只使用选项-m,则只修改修改戳记.若要修改戳记的文件尚不存在,除非使用-c选项,否则touch 将创建它(作为空文件,并赋予0666的模式且受umask值的限制).

POSIX标准定义的选项

   -a     修改文件 file 的存取时间.
   -c     不创建文件 file.
   -m     修改文件 file file
   -r ref_file  将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.
   -t time   使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数:[[CC]YY]MMDDhhmm[.SS]  这里,CC为年数中的前两位,即“世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天 数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统 的限制,早于1970年1月1日的时间是错误的.

GNU版本选项用法简介

options:
	-a, --time=atime, --time=access, --time=use 只修改存取时间.
   -c, --no-create  如果要修改的文件不存在,此选项使touch不去创建它.
   -d, --date=time 使用时间值 time 代替指定文件的戳记值.可以包含月份 名,时区名以及`am'和 `pm'等等.
   -f     此选项用于兼容BSD版本的 touch(1).
   -m, --time=mtime, --time=modify 只修改修改时间.
   -r file, --reference=file 使用参照文件 file 的时间戳记值修改指定文件的时间戳 记.
   -t decimtime 这里时间值  decimtime  的格式为MMDDhhmm[[CC]YY][.ss] 从左至右分别是月份,日期,小时,分钟,可选的世纪和 年,以及可选的秒. touch将用这组数值修改指定文件的 时间戳记.请注意,这个格式与POSIX标准所规定的格式并 不一样.
演示
# 创建文件
	# touch test
# 查看文件的元数据
	# stat test
	  文件:"test"
	  大小:0         	块:0          IO 块:4096   普通空文件
	设备:fd00h/64768d	Inode:69307916    硬链接:1
	权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
	最近访问:2020-10-20 17:37:40.492455488 +0800
	最近更改:2020-10-20 17:37:40.492455488 +0800
	最近改动:2020-10-20 17:37:40.492455488 +0800
	创建时间:-

改变文件的访问时间到当前时间

# touch -a test 
	# stat test
	  文件:"test"
	  大小:0         	块:0          IO 块:4096   普通空文件
	设备:fd00h/64768d	Inode:69307916    硬链接:1
	权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
	最近访问:2020-10-20 17:39:07.355451039 +0800
	最近更改:2020-10-20 17:37:40.492455488 +0800
	最近改动:2020-10-20 17:39:07.355451039 +0800
	创建时间:-

注意:这里可以看到change时间也被改变了,

改变modify和chang时间
只改变文件的修改时间(modify)

[root@oracle logs]# touch -m test 
[root@oracle logs]# stat test
  文件:"test"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:69307916    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2020-10-20 17:39:07.355451039 +0800
最近更改:2020-10-20 17:42:20.506441147 +0800
最近改动:2020-10-20 17:42:20.506441147 +0800
创建时间:-

此处可以看到,修改modify时间是,change时间也跟着改变了

改变文件的change time,通过修改文件的权限,可以改变文件的Ctime

[root@oracle logs]# chown 755 test 
[root@oracle logs]# stat test 
  文件:"test"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:69307916    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(  755/ UNKNOWN)   Gid:(    0/    root)
最近访问:2020-10-20 17:39:07.355451039 +0800
最近更改:2020-10-20 17:42:20.506441147 +0800
最近改动:2020-10-20 17:45:31.996431339 +0800
创建时间:-

将文件的时间戳修改为指定的时间

使用-t选项

-t的时间格式为:[[CC]YY]MMDDhhmm[.SS]
	CC - 年份的前两位 
	YY - 年份的后两位 
	MM - 月份 [01-12]
	DD - 日期 [01-31]
	hh - 时 [00-23]
	mm - 分 [00-59]

将文件的Atime修改到指定的时间

[root@oracle logs]# touch -a  -t 202010091747.30 test 
[root@oracle logs]# stat test 
  文件:"test"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:69307916    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(  755/ UNKNOWN)   Gid:(    0/    root)
最近访问:2020-10-09 17:47:30.000000000 +0800
最近更改:2020-10-20 17:42:20.506441147 +0800
最近改动:2020-10-20 17:47:53.994424066 +0800
创建时间:-

使用-d选项

-d选项的时间格式为:日-月-年
[root@oracle logs]# touch -m -d '08-August-2008' test
[root@oracle logs]# stat test 
  文件:"test"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:69307916    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(  755/ UNKNOWN)   Gid:(    0/    root)
最近访问:2020-10-09 17:47:30.000000000 +0800
最近更改:2008-08-08 00:00:00.000000000 +0800
最近改动:2020-10-20 17:50:30.771416037 +0800
创建时间:-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值