继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Linux touch 命令 - 为什么我们需要改变时间戳?

慕侠2389804
关注TA
已关注
手记 273
粉丝 55
获赞 156

我们可能在 Linux 下运用 touch 命令创建一个空文件。当然我们也可以使用其他命令例如 vi, nano 或是任意一个编辑工具来实现。但是你可能需要更多的步骤来完成操作。其实你要知道 touch 命令的主要功能并不是为了创建一个空文件哦。

 

什么是 touch 命令

众所周知,每个文件都被附有时间戳。这个时间戳记包括访问时间和修改时间。而 Touch 命令主要就是用来修改文件的访问时间和修改时间。

为什么我们需要使用 touch 命令

既然 touch 命令描述的是改变时间戳,那么我们可能会想为什么我们需要去改变时间戳呢?这个问题会引发我们的深思。然而,我想有个理由可以解释为什么我们需要使用它。如果你参加了一个全球范围的开源项目,那么时间戳可能变得很重要。编译源代码文件可能需要同一地区的时间戳。如果未统一,程序可能会编译失败。(译注:有强迫症的同学也很喜欢这个命令——就看不得乱七八糟的时间,;>)

不带任何选项下运行 touch

最简单的使用 touch 命令。只需键入:

$ touch file_name

请观察下面的一张截图。

Touch command

Touch command

File_1.txt原来的时间戳是 12:42。在我们使用 touch 命令后,它改变为了 17:08。由此看出,默认情况下,touch 会将文件的时间戳改为当前时间。

只改变访问时间

正如我们之前提到的,每个文件都附有访问时间和修改时间。上面的时间戳是 17:08。我们可以看更多的细节。

Detail timestamp

Detail timestamp

我们发现访问时间和修改时间的值是相同的都是 17:08:35 ,还有它们属于同一时区 GMT +7。

如果现在我们要只改变访问时间,我们需要使用-a选项。

$ touch -a file_1.txt

Touch -a option

Touch -a option

如你所见,访问时间变为了 17:51:37 ,但是修改时间仍为17:08:35。[译注:原文为 Change time(状态改变时间)应是作者笔误]

只改变修改时间

我们可以使用-m选项来实现。现在我们用file_2.txt作个示例。

File_2.txt detail timestamp

File_2.txt detail timestamp

$ touch -m file_2.txt

Touch -m option

Touch -m option

现在修改时间从 12:42:20 改为了 17:57:20。请注意,当文件被访问或修改时,状态改变时间域的值总会对其记录。

更改为自定义时间戳

-a和-m选项都会将文件的时间戳改为现在当前时间。当然我们也可以更改为自定义时间戳。使用-t选项实现。

从上面示例示例中的 file_2.txt,我们看出它的时间戳是:

访问时间:12:42:20
修改时间:17:57:20
执行日期:2014-01-14

假如我们想要将访问时间和修改时间改为2014年1月12日 09:58:27。我们可以用下列命令来完成:

$ touch -t 201401120958.27 file_2.txt

Touch using -t option

Touch using -t option

-t 选项语法组成 :

[[CC]YY]MMDDhhmm [.SS]

CC - 年份的前两位 
YY - 年份的后两位 
MM - 月份 [01-12]
DD - 日期 [01-31]
hh - 时 [00-23]
mm - 分 [00-59]
SS - 秒 [00-61]

改变日期和时间的另一种方式

如果你觉得[[CC]YY]MMDDhhmm [.SS]格式不适合你,我们也可以使用 -d 选项。下面是-d选项使用的一个示例。

更改指定日期

举例来说,我们有个名为 file_3.txt 的文件,它的相关属性在下面的截图中展示了。

File_3.txt detail timestamp

File_3.txt detail timestamp

现在我们要将日期2014年1月14日改为2013年12月20日。可以使用下列命令:

$ touch -d '10-December-2013' file_3.txt

Change date using -d option

Change date using -d option

不出意料,访问时间和修改时间的日期已经改为了2013年12月10日。

改变时区

如果我们想改变指定GMT的时间,我们也可以使用-d选项。先让file_3.txt 移回当前时间。

$ touch file_3.txt

Reset file_3.txt timestamp

Reset file_3.txt timestamp

不难发现 file_3.txt 的时区为 GMT +0700。要改为 GMT3 时区,我们只需要键入如下命令:

$ touch -d GMT3 file_3.txt

Change into GMT3 timezone

Change into GMT3 timezone

好的,现在时间已经改为了 10:00:00 AM。

结合参数下使用-d选项

还可以用很酷的方式使用-d选项。请观察下面的图片。

Change date using keyword

Change date using keyword

我们可以将单词 next Sunday 和 GMT 3合成一个值,而 touch 命令仍然能识别它。日期已经改为了2014年1月21日,而当前的日期为2014年1月14日。

还有另一个-d选项的示例。 首先,我们要将file3_3.txt重置到当前日期和时间。

$ touch file_3.txt

Reset file_3.txt timestamp

Reset file_3.txt timestamp

然后我们尝试这个命令:

$ touch -d '1 year ago 13:43:07' file_3.txt

Change date using keyword

Change date using keyword

太震撼了,Touch 甚至能识别单词‘1 year ago’。现在的日期以及时间已经改为了2013年1月14日,13:43:07。

创建一个空文件

当你运行 touch 命令目标文件不存在时,touch 会创建一个同名的空文件。

$ touch file_10.txt

Create an empty file

Create an empty file

同时创建多个文件

你可以用空格将目标文件分割开来,以此来创建多个文件。

$ touch doc_10.txt doc_20.txt doc_30.txt

Create multiple files

Create multiple files

总结

如果你要处理关于文件或目录的时间戳问题,那么 Touch 会对你很有用的。一如既往得你也可以键入man touch或touch --help来显示帮助页面了解更多细节。

原创:Linux中国 https://linux.cn/article-2740-1.html
原创:LCTT https://linux.cn/article-2740-1.html译者: Luoxcat

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP