touch:创建空文件或改变文件的时间戳属性
【功能说明】
touch命令有两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性
【语法格式】
touch [option] [file]
touch [选项] [文件]
|
提示:
- touch命令以及后面的选项和文件,每个元素之间都至少要有一个空格
- 注意区分touch和mkdir命令的功能,mkdir命令是创建空目录,而touch是创建空文件。
- 在linux中,一切皆文件。虽然touch命令不能创建目录,但是可以修改目录的时间戳。
【选项说明】
参数说明 |
解释说明 |
-a |
只更改指定文件的最后访问时间 |
-d |
使用字符串STRING代表的时间作为模板设置指定文件的时间属性 |
-m |
只更改指定文件的最后修改时间 |
-r file |
将指定文件的时间属性设置为与模板文件file的时间属性相同 |
-t STAMP |
使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒 |
【使用范例】
基础范例
案例1:创建文件示例(文件事先不存在的情况)
[root@1-230 ~]# mkdir /test #在根下新建一个test目录 [root@1-230 ~]# cd /test/ #切换到/text目录 [root@1-230 test]# touch aa.txt #创建空文件aa.txt [root@1-230 test]# ls #查看到aa.txt文件创建成功 aa.txt [root@1-230 test]# touch a.txt b.txt #同时创建多个文件,类似mkdir创建多个目录 [root@1-230 test]# ls aa.txt a.txt b.txt [root@1-230 test]# touch scc{1..5} #可以利用大括号“{ }”输出的字符序列批量创建文件 [root@1-230 test]# ls aa.txt a.txt b.txt scc1 scc2 scc3 scc4 scc5
|
案例2:更改文件的时间戳属性
[root@1-230 test]# stat aa.txt #stat命令可以查看文件的时间戳属性,具体用法见后面stat命令 文件:"aa.txt" 大小:0 块:0 IO 块:4096 普通空文件 设备:fd00h/64768d Inode:35313153 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2018-10-30 23:11:37.065471839 +0800 最近更改:2018-10-30 23:11:37.065471839 +0800 最近改动:2018-10-30 23:11:37.065471839 +0800 创建时间:-
提示:
说明:文件的时间戳属性分为访问时间、修改时间、状态改变时间
[root@1-230 test]# touch -a aa.txt #-a 参数更改最后访问的时间 [root@1-230 test]# stat aa.txt 文件:"aa.txt" 大小:0 块:0 IO 块:4096 普通空文件 设备:fd00h/64768d Inode:35313153 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2018-10-30 23:17:06.329316946 +0800 最近更改:2018-10-30 23:11:37.065471839 +0800 最近改动:2018-10-30 23:17:06.329316946 +0800 创建时间:-
[root@1-230 test]# touch -m aa.txt #-m参数更改最后修改的时间 [root@1-230 test]# stat aa.txt 文件:"aa.txt" 大小:0 块:0 IO 块:4096 普通空文件 设备:fd00h/64768d Inode:35313153 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2018-10-30 23:17:06.329316946 +0800 最近更改:2018-10-30 23:20:26.211938858 +0800 最近改动:2018-10-30 23:20:26.211938858 +0800 创建时间:-
|
案例3:指定时间属性创建/修改文件
可利用选项-d指定创建文件后的文件修改时间:
[root@1-230 test]# ls -lh aa.txt #修改前的文件修改时间10月30日 -rw-r--r-- 1 root root 0 10月 30 23:20 aa.txt [root@1-230 test]# touch -d 20181129 aa.txt #指定创建文件后的文件修改时间为2018年11月29日 [root@1-230 test]# ls -lh aa.txt #修改后时间为2018年11月29日 -rw-r--r-- 1 root root 0 11月 29 2018 aa.txt
|
也可以利用选项-r,修改aa.txt的时间属性,使其和a.txt的时间属性一致:
[root@1-230 test]# ls -lh a.txt #查看a.txt的修改时间 -rw-r--r-- 1 root root 0 10月 30 23:11 a.txt [root@1-230 test]# touch -r a.txt aa.txt #使用-r参数让a.txt的时间属性和a.txt一致 [root@1-230 test]# ls -lh aa.txt -rw-r--r-- 1 root root 0 10月 30 23:11 aa.txt #aa.txt文件的修改时间和a.txt一致
|
还可以利用选项-t,将文件设置为201810312333.50时间格式
[root@1-230 test]# touch -t 201810312333.50 aa.txt [root@1-230 test]# ls -lh --full-time aa.txt -rw-r--r-- 1 root root 0 2018-10-31 23:33:50.000000000 +0800 aa.txt
查看设置的属性
|
【扩展知识】
这里扩展一点有关时间戳属性的知识
GNU/Linux的文件有三种类型的时间戳:
Access: 2018-10-31 23:33:50.000000000 +0800 #最后访问文件的时间 Modify: 2018-10-31 23:33:50.000000000 +0800 #最后修改文件的时间 Change: 2018-10-30 23:35:05.120111040 +0800 #最后改变文件状态的时间
|
对应ls命令,查看上述时间戳的选项如下:
mtime:最后修改时间(ls -lt) #修改文件内容,文件的修改时间(modify time)会改变
ctime:状态改变时间(ls -lc)#修改文件内容,移动文件或改变文件属性等,文件的change时间会改变
atime:最后访问时间(ls -lu) #查看文件内容时,文件的访问时间(access time)会改变
|