Linux Touch命令(如何更改文件时间戳)示例

举报
Tiamo_T 发表于 2022/07/14 19:26:03 2022/07/14
【摘要】 Linux 中的每个文件都与时间戳相关联,时间戳指定了上次访问时间、上次修改时间和上次更改时间。

Linux 中的每个文件都与时间戳相关联,时间戳指定了上次访问时间、上次修改时间和上次更改时间。

每当我们创建新文件或修改现有文件或其属性时,这些时间戳都会自动更新。

touch 命令用于更改这些时间戳(访问时间、修改时间和文件的更改时间)。

1.使用触摸创建一个空文件

您可以使用 touch 命令创建一个空文件。以下示例将创建一个名为 tgs.txt 的零字节新文件。

$ touch tgs.txt

您还可以使用 -c 选项来避免创建新文件。如果您使用 -c 选项,并且文件不存在,则 touch 不会创建该文件。

$ touch -c a.txt

ls 命令find 命令等命令使用这些时间戳信息来列出和查找文件。

您还可以从单个触摸命令创建多个文件。以下示例将创建 4 个名为 a、b、c 和 d 的文件。


$ touch a b c d

2. 使用 -a 更改文件的访问时间

我们可以使用 -a 选项更改文件的访问时间。默认情况下,它将采用当前系统时间并更新 atime 字段。

在执行 touch 命令之前:

$ stat tgs.txt

  File: `tgs.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2012-10-18 23:58:21.663514407 +0530
Modify: 2012-10-18 23:58:21.663514407 +0530
Change: 2012-10-18 23:58:21.663514407 +0530
$ touch -a tgs.txt

在上面的touch命令之后(请注意访问时间有变化):

$ stat tgs.txt

  File: `tgs.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2012-10-19 00:08:23.559514525 +0530
Modify: 2012-10-18 23:58:21.663514407 +0530
Change: 2012-10-19 00:08:23.559514525 +0530

3. 使用 -m 更改文件的修改时间

您可以使用 -m 选项更改文件的修改时间。

$ touch -m *.o

使用 make 实用程序时,上述方法可用于更改所有 obj 文件的 mtime。

注意:无法使用 touch 命令更改 ctime

4. 使用 -t 和 -d 显式设置访问和修改时间

您可以使用 -t 和 -d 选项显式指定时间,而不是获取当前时间戳。

指定 -t 的格式为 [[CC]YY]MMDDhhmm[.SS]

$ touch -t [[CC]YY]MMDDhhmm[.SS]

下面解释上述格式:

  • CC – 指定年份的前两位数字
  • YY – 指定年份的最后两位数字。如果 YY 的值在 70 到 99 之间,CC 位的值假定为 19。如果 YY 的值在 00 到 37 之间,CC 位的值假定为 20。无法将日期设置为 2038 年 1 月 18 日之后。
  • MM – 指定月份
  • DD – 指定日期
  • hh - 指定小时
  • mm – 指定分钟
  • SS – 指定秒数

例如:

$ touch -a -m -t 203801181205.09 tgs.txt

使用 stat 命令验证上述更改:

$ stat tgs.txt
  File: `tgs.txt'
  Size: 3         	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2038-01-18 12:05:09.000000000 +0530
Modify: 2038-01-18 12:05:09.000000000 +0530
Change: 2012-10-19 00:40:58.763514502 +0530

您还可以使用字符串来更改时间

另一个例子:

$ touch -d "2012-10-19 12:12:12.000000000 +0530" tgs.txt

对于开发人员,当您使用Makefile时,touch 命令将非常有用

5. 使用 -r 从另一个文件复制时间戳

您也可以将一个文件作为参考,并更新其他文件的时间,使两个文件保持相同的时间。

以下 touch 命令示例将使用 tgs.txt 文件的时间戳更新文件 a.txt 的时间戳。

$ touch a.txt -r tgs.txt
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。