Linux touch命令修改文件时间

Linux touch命令修改文件时间

在Linux系统下,touch是一条常用的命令,可以创建新文件或者修改已有文件的访问时间和修改时间。

touch命令的基本用法为:

touch [选项] 文件

其中,选项有很多种,这里只介绍常用的几个:

  • -a:仅修改访问时间。
  • -m:仅修改修改时间。
  • -c:如果文件不存在就不创建文件。
  • -r:将指定文件或目录的时间戳同步到目标文件。

下面来分别演示以上几种选项的用法。

-a:仅修改访问时间

我们先创建一个测试文件:

$ touch test.txt

然后查看一下文件的时间戳:

$ ls -l test.txt
-rw-r--r-- 1 user user 0 Nov 22 14:13 test.txt

可以看到,文件的访问时间和修改时间都是当前时间。现在,我们使用-a选项来修改文件的访问时间:

$ touch -a test.txt

然后再次查看文件的时间戳:

$ ls -l test.txt
-rw-r--r-- 1 user user 0 Nov 22 14:14 test.txt

可以看到,文件的修改时间没有变化,但是访问时间已经变成了当前时间。

-m:仅修改修改时间

同样的,我们还是以创建一个测试文件为例:

$ touch test.txt

然后查看一下文件的时间戳:

$ ls -l test.txt
-rw-r--r-- 1 user user 0 Nov 22 14:15 test.txt

可以看到,文件的访问时间和修改时间都是当前时间。现在,我们使用-m选项来修改文件的修改时间:

$ touch -m test.txt

然后再次查看文件的时间戳:

$ ls -l test.txt
-rw-r--r-- 1 user user 0 Nov 22 14:16 test.txt

可以看到,文件的访问时间没有变化,但是修改时间已经变成了当前时间。

-c:如果文件不存在就不创建文件

在有些场景下,我们需要修改一个已经不存在的文件的时间戳,但是不希望touch命令自动创建这个文件。这时候就可以使用-c选项。

我们先尝试使用touch命令修改一个不存在的文件:

$ touch foo.txt

然后查看一下文件的时间戳:

$ ls -l foo.txt
-rw-r--r-- 1 user user 0 Nov 22 14:17 foo.txt

可以看到,touch命令自动创建了这个文件。现在,我们使用-c选项来修改一个不存在的文件,可以看到touch命令不会创建这个文件:

$ touch -c bar.txt

然后查看一下文件的时间戳:

$ ls -l bar.txt
ls: 无法访问'bar.txt': 没有那个文件或目录

可以看到,bar.txt文件并不存在。

-r:将指定文件或目录的时间戳同步到目标文件

有时候我们需要将一个文件或目录的时间戳同步到另一个文件上。比如,我们有一个文件a.txt,它的时间戳是我们需要的时间戳,现在我们想要将b.txt的时间戳修改成和a.txt一样。这时候就可以使用-r选项来实现。

我们先创建一个测试文件a.txt:

$ touch a.txt

然后再创建一个测试文件b.txt:

$ touch b.txt

然后查看一下两个文件的时间戳:

$ ls -l a.txt b.txt
-rw-r--r-- 1 user user 0 Nov 22 14:23 a.txt
-rw-r--r-- 1 user user 0 Nov 22 14可以看到,两个文件的时间戳都是当前时间。现在,我们将a.txt的时间戳同步到b.txt上:
$ touch -r a.txt b.txt

然后再次查看一下两个文件的时间戳:

$ ls -l a.txt b.txt
-rw-r--r-- 1 user user 0 Nov 22 14:23 a.txt
-rw-r--r-- 1 user user 0 Nov 22 14:23 b.txt

可以看到,b.txt的时间戳已经变成了和a.txt一样的时间戳。

结论

Linux touch命令可以方便地修改文件的访问时间和修改时间。通过-a和-m选项可以分别修改访问时间和修改时间。通过-c选项可以避免touch自动创建不存在的文件。通过-r选项可以将一个文件或目录的时间戳同步到另一个文件上。在日常的Linux系统管理中,touch命令是非常实用的一个命令,希望读者能够熟练掌握。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程