介绍:
touch命令用来修改文件的访问时间、修改时间。如果没有指定时间,则将文件时间属性改为当前时间。当指定文件不存在,则touch命令变为创建该文件。
语法:
touch [-acm] [-d STRING-time] [-r reference-file] [-t [[CC]YY]MMDDhhmm[.ss]]
选项介绍:
-a: 只修改访问时间;
-c: 如果指定文件不存在,则不创建文件;
-d STRING-time: 用字符串格式的时间来指定时间属性的修改值;
-m: 只修改指定文件的修改时间;
-r refernce-file: 将指定文件的时间属性改为与reference-file时间属性相同的值;
-t [[CC]YY]MMDDhhmm[.ss]: 用[[CC]YY]MMDDhhmm[.ss]这种时间格式来指定时间属性的修改值;
执行范例:
01
$ls #查看当前空的目录
02
$
03
$touch text#指定文件不存在,创建文件text
04
$ stat text# stat命令可能查看文件的时间属性。
05
File: `text’
06
Size: 0 Blocks: 8 IO Block: 4096 regular emptyfile
07
Device: 831h/2097d Inode: 211271681 Links: 1
08
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
09
Access: 2010-03-01 22:03:30.000000000 +0800
10
Modify: 2010-03-01 22:03:30.000000000 +0800
11
Change: 2010-03-01 22:03:30.000000000 +0800
12
$cat text# 读文件
13
$ stat text# 发现文件的访问时间(Access)改变
14
File: `text’
15
Size: 0 Blocks: 8 IO Block: 4096 regular emptyfile
16
Device: 831h/2097d Inode: 211271681 Links: 1
17
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
18
Access: 2010-03-01 22:04:08.000000000 +0800
19
Modify: 2010-03-01 22:03:30.000000000 +0800
20
Change: 2010-03-01 22:03:30.000000000 +0800
21
$echo “hello world” > text# 相当于写文件
22
$ stat text# 发现文件的修改时间(Modify)改变
23
File: `text’
24
Size: 12 Blocks: 16 IO Block: 4096 regularfile
25
Device: 831h/2097d Inode: 211271681 Links: 1
26
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
27
Access: 2010-03-01 22:04:08.000000000 +0800
28
Modify: 2010-03-01 22:04:58.000000000 +0800
29
Change: 2010-03-01 22:04:58.000000000 +0800
30
$touch text#将文件的访问时间、修改时间改为当前时间
31
$ stat text
32
File: `text’
33
Size: 12 Blocks: 16 IO Block: 4096 regularfile
34
Device: 831h/2097d Inode: 211271681 Links: 1
35
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
36
Access: 2010-03-01 22:05:41.000000000 +0800
37
Modify: 2010-03-01 22:05:41.000000000 +0800
38
Change: 2010-03-01 22:05:41.000000000 +0800
39
$touch -a text# 只修改文件的访问时间
40
$ stat text
41
File: `text’
42
Size: 12 Blocks: 16 IO Block: 4096 regularfile
43
Device: 831h/2097d Inode: 211271681 Links: 1
44
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
45
Access: 2010-03-01 22:05:51.000000000 +0800
46
Modify: 2010-03-01 22:05:41.000000000 +0800
47
Change: 2010-03-01 22:05:51.000000000 +0800
48
$touch -d”01/23/2000″ text#将文件时间属性改为2000年1月23号
49
$ stat text
50
File: `text’
51
Size: 12 Blocks: 16 IO Block: 4096 regularfile
52
Device: 831h/2097d Inode: 211271681 Links: 1
53
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
54
Access: 2000-01-23 00:00:00.000000000 +0800
55
Modify: 2000-01-23 00:00:00.000000000 +0800
56
Change: 2010-03-01 22:07:05.000000000 +0800
57
$touch -d”1:04am 01/24/2000″ text#将文件时间属性改为2000年1月23号1:04am
58
$ stat text
59
File: `text’
60
Size: 12 Blocks: 16 IO Block: 4096 regularfile
61
Device: 831h/2097d Inode: 211271681 Links: 1
62
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
63
Access: 2000-01-24 01:04:00.000000000 +0800
64
Modify: 2000-01-24 01:04:00.000000000 +0800
65
Change: 2010-03-01 22:07:48.000000000 +0800
66
$touch -t 09010059.30 text#将文件时间属性改为9月1号0点59分30秒
67
$ stat text
68
File: `text’
69
Size: 12 Blocks: 16 IO Block: 4096 regularfile
70
Device: 831h/2097d Inode: 211271681 Links: 1
71
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
72
Access: 2010-09-01 00:59:30.000000000 +0800
73
Modify: 2010-09-01 00:59:30.000000000 +0800
74
Change: 2010-03-01 22:09:27.000000000 +0800
75
$touch -r /etc/passwd text#将文件的时间属性改为与/etc/passwd文件的时间属性相同的值
76
$ stat text
77
File: `text’
78
Size: 12 Blocks: 16 IO Block: 4096 regularfile
79
Device: 831h/2097d Inode: 211271681 Links: 1
80
Access: (0644/-rw-r–r–) Uid: ( 514/ xxxx) Gid: ( 100/users)
81
Access: 2010-03-01 22:22:20.000000000 +0800
82
Modify: 2010-01-22 21:02:50.000000000 +0800
83
Change: 2010-03-01 22:22:35.000000000 +0800
扩展阅读:
什么是文件的时间属性?
在linux下,一个文件有三种时间属性: 访问时间、修改时间、状态改动时间。
访问时间: 记录文件最近被阅读的时间(vim,cat,more等命令都能修改该值)。
修改时间: 记录文件最近被修改的时间(ls -l命令显示的时间即为该时间)。
状态改动时间: 记录该文件的inode节点被修改的时间。touch命令除了-d和-t选项外都会改变该时间。而且chmod,chown等命令也能改变该值。
如何查看文件的时间属性?
用stat命令可以查看文件的时间属性,见上例。
另外ls命令也可以查看文件的时间属性:
ls -l file : 查看文件修改时间
ls -lc file: 查看文件状态改动时间
ls -lu file: 查看文件访问时间
touch命令-t选项的时间格式[[CC]YY]MMDDhhmm[.ss]说明:
CC表示世纪
YY表示年
MM表示月
DD表示日
hh表示小时
mm表示分钟
ss表示秒
201001311200.34
CCYYMMDDhhmm ss
表示时间为2010年1月31日12点0分34秒