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命令是非常实用的一个命令,希望读者能够熟练掌握。