9个有用的Linux Touch命令示例

Linux中的Touch命令用于更改文件的时间戳,但是Touch命令最常见的用途之一是创建一个新的空文件。

使用touch命令,您可以在Linux中更改访问权限,更改文件和文件夹的时间。 您可以更新时间戳或将其更改为过去的日期。

touch命令的语法非常简单:

touch [option] file

Linux中的文件时间戳是什么?

为了快速参考,我们将在此处列出时间戳:

  • 访问时间-上次访问文件的时间
  • 更改时间-上次更改文件的时间
  • 更改时间-上次更改文件元数据(文件许可权,所有权等)的时间

您可以使用stat命令查看文件的时间戳,如下所示:

stat andreyex.txt 
  File: andreyex.txt
  Size: 10        	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11940163    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 14:24:16.214425121 +0530
Modify: 2018-09-02 14:24:16.214425121 +0530
Change: 2018-09-02 14:24:16.214425121 +0530
 Birth: -

9个实用的Linux touch命令示例

现在,通过简单而有用的示例来看看如何使用touch命令。

1.创建一个空文件

如前所述,这是touch命令的最常用用法。 您所要做的就是触摸文件名。

touch <filename>

如果该文件不存在,则将创建一个空文件。

touch empty_file
ls -l empty_file 
-rw-r--r-- 1 andreyexshek andreyexshek 0 Sep  2 14:24 empty_file

但是,如果文件已经存在怎么办? 在这种情况下,它将所有三个临时文件更新为当前时间。

2.创建一些空白文件

您可以使用touch创建多个空白文件。 只需提供您要创建的文件的名称即可。

touch <file1> <file2> <file3>

如果您认为自己厌倦了编写所有文件名,则可以自动生成如下文件名:

touch new-file-{1..10}.txt

这将创建文件new-file-1.txt,new-file-2.txt到new-file-10.txt。

3.避免通过触摸创建文件(如果该文件不存在)

如果输入文件存在,Touch会更新其时间戳;如果输入文件不存在,Touch将创建一个空文件。

但是,如果您不想使用touch创建一个新的空文件怎么办? 您希望它更新文件的时间戳,但是如果文件不存在,则不应创建它。

在以下情况下,可以将touch命令与-c选项一起使用:

touch -c <filename>

注意切记:Touch将创建一个新的空文件,如果它不存在,它将覆盖现有文件的时间戳。 您可以使用-c选项停止创建新文件。

4.更改所有文件时间戳

如果您触摸现有文件,它将更改访问权限,并更改该文件的时间。

例如,我有一个带有以下时间戳的文件Alex_many.txt:

stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-08-14 11:24:45.092937000 +0530
Modify: 2018-08-16 15:22:55.028309000 +0530
Change: 2018-08-14 11:24:45.096937182 +0530

如果使用touch命令,则所有时间戳都将更改为当前时间戳。

touch Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
 Birth: -

注意您不必担心CTime(时间更改)。 这是系统属性,不能/不应由用户控制。 您必须专注于访问和更改时间。

5.仅更新文件访问时间

您可能并不总是能够更改文件的所有时间戳。 如果只想更改文件访问时间,则可以在触摸命令中使用-a选项。

touch -a Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
 Birth: -

6.仅在修改文件后更新

如果仅要将文件修改时间更新为当前时间戳,请在touch命令中使用-m选项。

touch -m Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
 Birth: -

7.使用另一个文件的时间戳

您还可以将另一个文件的时间戳用作带有-r选项的链接,如下所示:

touch -r <source_file> <target_file>

这将设置目标文件的访问和修改时间与源文件的访问和修改时间相同。

8.设置特定的访问和修改时间

您可能已经注意到,几乎在所有情况下(引用文件除外),时间戳都更改为当前时间戳。

但是您没有连接。 触摸允许您将访问和修改时间设置为过去或将来的日期。 您可以按以下格式使用-t选项和时间戳:

[[CC]YY]MMDDhhmm[.ss]

  • CC-年份的前两位数字
  • YY-年的两位数
  • MM-一年中的月份(01-12)
  • DD-每月的某天(01-31)
  • hh-一天中的小时(00-23)
  • 毫米-时分(00-59)
  • ss-秒(00-59)

在上述情况下,CC是可选的。 实际上,CCYY也是可选的,在这种情况下,将需要本年。 同样,秒也是可选的,默认情况下为00。

让我们为您展示一个示例,方法是将时间戳更改为12021301。 当年的第12个月,第二天,第13小时和第一分钟:

touch -t 12021301 destroyer.txt 
stat destroyer.txt 
  File: destroyer.txt
  Size: 457       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928279    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
 Birth: -

如果您尝试输入一个无效的日期,您将看到一条错误消息。 您还将注意到更改时间使用当前时间戳,而不是访问和更改。 这是因为它是系统属性。

9.更改符号链接的时间戳

您还可以将touch命令与符号链接一起使用。 处理符号链接时,只需使用-h选项。 其余部分与常规文件相同。

touch -h <symbolic_link>

希望您发现这些Linux命令行示例有用。 如果您有任何疑问或建议,请告诉我们。

请禁用您的广告拦截器或将此网站列入白名单!

Sidebar