Linux Touch命令(如何更改文件时间戳)示例
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
- 点赞
- 收藏
- 关注作者
评论(0)