Linux常用命令-touch

命令

touch

描述

change file timestamps
更改文件时间

用法

1
touch [OPTION]... FILE...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Options:
-a 只更改atime
-c 不要创建文件
-h 更改链接文件而非源文件
-m 只更改mtime
-d STRING 使用指定时间
-r FILE 使用指定文件的时间来替换当前文件的时间
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss]指定时间格式
--time=WORD 更改指定时间戳,WORD可选参数为access或atime等同于-a,modify或mtime等同于-m

文件时间
Access time: 访问时间atime,上次读取文件的时间
Modify time: 修改时间mtime,上次修改文件内容的时间
Change time: 状态修改时间ctime,上次更改文件属性的时间

注意

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -c如果文件存在则更改文件时间,如果文件不存在则不创建文件
$ touch -c file
$ ls file
ls: cannot access file: No such file or directory
$ touch file
$ stat file
...
Access: 2021-02-16 13:51:41.664519297 +0800
Modify: 2021-02-16 13:51:41.664519297 +0800
Change: 2021-02-16 13:51:41.664519297 +0800
Birth: -
# 默认会同步更改三个时间戳
$ touch -c file
$ stat file
...
Access: 2021-02-16 13:52:01.878963659 +0800
Modify: 2021-02-16 13:52:01.878963659 +0800
Change: 2021-02-16 13:52:01.878963659 +0800
# -a更改atime,同时也会自动更改ctime
$ touch -a file
$ stat file
Access: 2021-02-16 13:56:01.142089829 +0800
Modify: 2021-02-16 13:52:01.878963659 +0800
Change: 2021-02-16 13:56:01.142089829 +0800
# -m更改mtime,同时也会自动更改ctime
$ touch -m file
$ stat file
Access: 2021-02-16 13:56:01.142089829 +0800
Modify: 2021-02-16 13:58:20.282786272 +0800
Change: 2021-02-16 13:58:20.282786272 +0800
$ ln -s file file1
$ stat file1
Access: 2021-02-16 13:59:50.259914863 +0800
Modify: 2021-02-16 13:59:50.259914863 +0800
Change: 2021-02-16 13:59:50.259914863 +0800
# -h更改链接文件的时间,源文件的时间不变
$ touch -h file1
$ stat file1
Access: 2021-02-16 14:02:14.331948894 +0800
Modify: 2021-02-16 14:02:14.331948894 +0800
Change: 2021-02-16 14:02:14.331948894 +0800
$ touch file
# -d指定相对时间
$ touch -d "-2day" file
$ stat file
Access: 2021-02-14 14:17:09.698503051 +0800
Modify: 2021-02-14 14:17:09.698503051 +0800
Change: 2021-02-16 14:17:09.697953402 +0800
$ touch -d "20201201" file
$ stat file
Access: 2020-12-01 00:00:00.000000000 +0800
Modify: 2020-12-01 00:00:00.000000000 +0800
Change: 2021-02-16 14:47:09.524693398 +0800
# -t指定具体时间,如月日时分
$ touch -t "02100910" file
$ stat file
Access: 2020-02-10 09:10:30.000000000 +0800
Modify: 2020-02-10 09:10:30.000000000 +0800
Change: 2021-02-16 14:52:36.556260702 +0800
# 指定年月日时分秒
$ touch -t "201902100910.30" file
$ stat file
Access: 2019-02-10 09:10:30.000000000 +0800
Modify: 2019-02-10 09:10:30.000000000 +0800
Change: 2021-02-16 14:54:27.965952128 +0800
# -r以指定文件file的时间来替换当前文件a的时间
$ touch -r file a
$ stat a
Access: 2019-02-10 09:10:30.000000000 +0800
Modify: 2019-02-10 09:10:30.000000000 +0800
Change: 2021-02-16 14:55:32.399983222 +0800