如何在linux使用touch命令修改文件时间戳

Linux中的touch命令是用于更改文件时间戳。但touch命令的最常见用法是创建新的空文件

4 min read
By myfreax
如何在linux使用touch命令修改文件时间戳

Linux中的touch命令是用于更改文件时间戳。但touch命令的最常见用法是创建新的空文件。在本教程中我们将说明如何使用touch命令更改Linux中文件和文件夹的访问、修改和更改时间。包括使用stat命令查看文件或者目录时间戳,修改为指定时间戳,使用另一个文件的时间戳,更改符号链接时间戳。

Linux文件时间戳

在讨论如何使用touch命令之前,首先回顾一下Linux中的文件时间戳。Linux中的文件有三个时间戳:

访问时间atime

atime全称Access time即某些命令或应用程序,如catvimgrep访问或者打开文件的最后时间。

修改时间mtime

mtime全称Modify time即上次修改文件内容的时间。

更改时间ctime

ctime全称Change time即文件的属性或内容最后一次更改。该属性包括文件权限,文件所有权或文件位置。

stat命令

在修改文件或者文件夹的时间戳之前,需要知道文件或者文件夹当前时间戳,从而确定是否修改时间戳,你可以使用stat命令打印包含时间戳的文件状态。

stat file_name

touch命令

要创建新文件,您需要具有对目录的写权限。否则,您将收到权限拒绝的错误。在没有任何选项的情况下是使用它的最简单形式,如果指定的文件不存在,touch将创建一个新文件。如果文件已存在,则touch会将文件的上次访问和修改时间更改为当前时间。

例如,如果文件file1不存在,则以下命令将创建它,否则将更改其时间戳:

touch file1

要一次创建或修改多个文件,请将多个文件名以空格符分隔作为参数传递touch命令:

touch file1 file2 file3

如果您不希望touch命令创建新文件,请使用-c--no-create)选项。例如,如果文件file1存在,则以下命令将更改文件时间戳,否则,它将不执行任何操作:

touch -c file1

仅更改访问或修改时间

默认情况下,如果未使用任何选项,则会将文件的上次访问和修改时间更新为当前时间。通过使用-a-m选项,允许你更改其中一个时间戳。

仅更改访问时间

使用-a选项仅更改文件的访问时间:

touch -a file1

仅更改修改时间

使用-m选项仅更改文件的修改时间:

touch -m file1

更改修改时间时,更改时间也将更新。

设置特定时间戳

touch命令还允许我们更新或创建具有除当前时间之外的特定时间的文件。使用-d--date=)选项指定日期字符串。touch将会使用指定的时间而不是当前时间。

例如,要将最后访问和修改时间更改为2018年6月1日11:02,您将使用以下命令:

touch -d '1 June 2018 11:02' file1

日期字符串需要用单引号括起来。您还可以为touch命令提供部分日期时间字符串。仅提供日期,自动将年份更改为当前年份:

touch -d '12 June' file1

使用-t选项指定时间戳,timestamp参数需要采用以下格式:

use [[CC]YY]MMDDhhmm[.ss]

例如,以下命令将file1 的上次访问和修改时间设置为当前年份的6月1日02日

touch -t 12061102 file1

使用另一个文件的时间戳

-r--reference=)选项允许我们指定一个参考文件,并使用它的时间戳,而不是当前的时间。例如,以下命令将告诉touch将file2的时间戳写到 file1

touch -r file1 file2

更改符号链接时间戳

默认情况下,如果在符号链接上使用touch命令修改属性,它将更改其引用文件的时间戳。使用-h--no-dereference)修改符号链接的时间戳,不会将属性的更改到其引用的文件例如,要更改符号链接symlink1的时间戳:

touch -h symlink1

结论

至此你应该很好地理解如何使用touch命令。