Linux Touch命令

时间:2020-03-05 15:28:43  来源:igfitidea点击:

touch命令使我们可以更新现有文件和目录上的时间戳,以及创建新的空文件。

在本教程中,我们将通过实际示例和最常见的命令选项的详细说明,向我们展示如何使用touch命令。

Linux文件时间戳

在探讨如何使用touch命令之前,让我们先回顾一下Linux中的文件时间戳。

Linux中的文件具有三个时间戳:

  • atime(访问时间)-上一次通过某些命令或者应用程序(例如cat,vim或者grep)访问/打开文件的时间。
  • mtime(修改时间)-上次修改文件内容的时间。
  • ctime(更改时间)-文件的属性或者内容上次更改的时间。该属性包括文件许可权,文件所有权或者文件位置。

要显示文件状态(包括时间戳),请使用“ stat”命令。

stat file_name

创建新文件需要在父目录上具有写权限。
否则,我们将收到一个权限被拒绝的错误。

如何使用touch命令

如果不使用任何选项,则使用最简单的形式,如果指定为参数的文件名不存在,touch会创建一个新文件。

如果文件已经存在,touch会将文件的上次访问和修改时间更改为当前时间。

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

touch file1

要一次创建或者修改多个文件,请指定文件名作为参数:

touch file1 file2 file3

如果我们不希望touch命令创建新文件,请使用'-c'('--no-create')选项。

例如,如果文件“ file1”存在,则以下命令将更改文件时间戳,否则将不执行任何操作:

touch -c file1

仅更改访问或者修改时间

默认情况下,如果未使用任何选项,touch会将文件的上次访问和修改时间更新为当前时间。
通过使用“ -a”和“ -m”选项,我们只能更改这些时间戳之一。

仅更改访问时间

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

touch -a file1

仅更改修改时间

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

touch -m file1

更改修改时间时,更改时间也会被更新。

设置特定的时间戳

touch命令还允许我们使用当前时间以外的特定时间更新或者创建文件。

使用'-d'('--date =')选项指定日期字符串,并使用它代替当前时间。

例如,要将“ file1”的上次访问和修改时间都更改为2016年6月1日11:02,我们可以使用以下命令:

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

日期字符串需要用单引号引起来。

我们还可以为touch命令提供部分日期时间字符串。
仅提供日期,会自动将年份更改为当前年份:

touch -d '12 June' file1

使用'-t'选项指定时间戳,并使用它代替当前时间。
timestamp参数必须采用以下格式:

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

例如,以下命令会将'file1'的最后访问和修改时间设置为当年的6月1日11:02.

touch -t 06011102 file1

使用另一个文件的时间戳

'-r'('--reference =')选项允许我们指定参考文件并使用其时间戳而不是当前时间。

例如,以下命令将告诉touch将“ file1”的时间用于“ file2”:

touch -r file1 file2

更改符号链接时间戳

默认情况下,如果在符号链接上使用touch命令,它将更改其引用文件的时间戳。

使用'-h'('--no-dereference')修改符号链接的时间戳。

例如,要更改符号链接“ symlink1”的时间戳,可以使用:

touch -h symlink1