touch命令
Linux的touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
在介绍touch命令前,先了解下linux的三个主要变动时间:mtime(modification time)、ctime(status time)、atime(access time)
- modification time (mtime): 当该文件的“内容数据”变更时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。
- status time (ctime): 当该文件的“状态 (status)”改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间。
- access time (atime): 当“该文件的内容被取用”时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了。
[root@study ~]# date;ls -l /etc/man_db.conf;ls -l --time=atime /etc/man_db.conf;ls -l --time=ctime /etc/man_db.conf
#这是同一行。用分号隔开
Tue Jun 16 00:43:17 CST 2015 # 当前时间
-rw-r--r--. 1 root root 5171 Jun 10 2014 /etc/man_db.conf # 在 2014/06/10 创建的内容(mtime)
-rw-r--r--. 1 root root 5171 Jun 15 23:46 /etc/man_db.conf # 在 2015/06/15 读取过内容(atime)
-rw-r--r--. 1 root root 5171 May 4 17:54 /etc/man_db.conf # 在 2015/05/04 更新过状态(ctime)
为了要让数据输出比较好看,将三个指令同时依序执行,用分号 ; 隔开即可。
ls -l
可以显示档案的时间记录,显示完整时间可以用ls --full-time
。还不熟悉ls命令的可以看下ls命令及常用参数详解
可以看到:
默认的情况下(第一个命令执行后的结果),ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。
第二行表示在2015-06-15这个时间更新过man_db.conf这个文件。
第三行表示系统是在5月4号的时候安装的,因此,这个文件被产生导致状态被更动的时间就回溯到那个时间点了(ctime)。
touch命令
语法:
touch [-acdmt] file ...
参数说明:
选项与参数 | 说明 |
---|---|
-a | 修改文件的存取时间atime |
-c | 仅修改文件时间,若文件不存在则不创建新文件。与 –no-create 的效果一样 |
-d | 后面可以接想要修订的日期而不用当前的日期,也可以使用--date=“日期或时间” |
-m | 改变档案的修改时间mtime |
-r | 使用参考文件的时间记录作为指定文件的时间,与 –file 的效果一样 |
-t | 设定时间而不用目前的时间,格式为[YYYYMMDDhhmm] |
–no-create | 不会建立新档案 |
–help | 列出指令格式 |
–version | 列出版本讯息 |
实例演示:
- 使用 touch 创建一个空文件
MHQ0063:~ xws$ touch file.txt
MHQ0063:~ xws$ ls -l file.txt
-rw-r--r-- 1 xws staff 0 7 25 12:22 file.txt
- 改变/更新文件和目录的访问时间
假设我们想要改变名为 file.txt 文件的访问时间,在 touch 命令中使用 -a 选项,然后输入文件名。如下所示:
MHQ0063:~ xws$ touch -a file.txt
现在使用 stat 命令验证文件的访问时间是否已更新:
MHQ0063:~ xws$ stat file.txt
16777220 12892326843 -rw-r--r-- 1 xws staff 0 0
"Jul 27 16:46:51 2019"
"Jul 25 12:22:26 2019"
"Jul 27 16:46:51 2019"
"Jul 25 12:22:26 2019" 4096 0 0 file.txt
- 改变目录的访问时间:
假设我们在 /test目录下有一个 test2 文件夹,让我们用下面的命令改变这个文件夹的访问时间:
MHQ0063:~ xws$ touch -m test/test2/
MHQ0063:~ xws$ stat test/test2/
16777220 12892481242 drwxr-xr-x 2 xws staff 0 64
"Jul 27 16:58:39 2019"
"Jul 27 17:31:28 2019"
"Jul 27 17:31:28 2019"
"Jul 27 16:58:39 2019" 4096 0 0 test/test2/
- 更改访问时间而不用创建新文件
在某些情况下,如果文件存在,我们希望更改文件的访问时间,并避免创建文件。在 touch 命令中使用 -c 选项即可,如果文件存在,那么我们可以改变文件的访问时间,如果不存在,我们也可不会创建它。
MHQ0063:~ xws$ touch -c test.txt
MHQ0063:~ xws$ touch -c test2.txt
MHQ0063:~ xws$ ls -s test2.txt
ls: test2.txt: No such file or directory
MHQ0063:~ xws$ ls -l test.txt
-rw-r--r--@ 1 xws staff 169 7 27 17:36 test.txt
- 更改文件和目录的修改时间
在 touch 命令中使用 -m 选项,我们可以更改文件和目录的修改时间。
让我们更改名为 file.txt 文件的更改时间:
MHQ0063:~ xws$ touch -m file.txt
现在使用 stat 命令来验证修改时间是否改变:
MHQ0063:~ xws$ stat file.txt
16777220 12892326843 -rw-r--r-- 1 xws staff 0 0 "Jul 27 16:46:51 2019" "Jul 27 17:43:11 2019" "Jul 27 17:43:11 2019" "Jul 25 12:22:26 2019" 4096 0 0 file.txt
同样的,我们可以改变一个目录的修改时间:
MHQ0063:~ xws$ touch -m test/test2/
MHQ0063:~ xws$ stat test/test2/
16777220 12892481242 drwxr-xr-x 2 xws staff 0 64 "Jul 27 16:58:39 2019" "Jul 27 17:45:26 2019" "Jul 27 17:45:26 2019" "Jul 27 16:58:39 2019" 4096 0 0 test/test2/
- 将访问和修改时间设置为特定的日期和时间
每当我们使用 touch 命令更改文件和目录的访问和修改时间时,它将当前时间设置为该文件或目录的访问和修改时间。
假设我们想要将特定的日期和时间设置为文件的访问和修改时间,这可以使用 touch 命令中的 -c
和 -t
选项来实现。
日期和时间可以使用以下格式指定:
{CCYY}MMDDhhmm.ss
其中:
- CC – 年份的前两位数字
- YY – 年份的后两位数字
- MM – 月份 (01-12)
- DD – 天 (01-31)
- hh – 小时 (00-23)
- mm – 分钟 (00-59)
比如我们将 file.txt 文件的访问和修改时间设置为未来的一个时间(2020 年 06月 01 日 13 时 14分)
MHQ0063:~ xws$ touch -c -t 202006011314 file.txt
使用 stat 命令查看更新访问和修改时间:也可使用ls -l --full-time
命令来查看
MHQ0063:~ xws$ stat file.txt
16777220 12892326843 -rw-r--r-- 1 xws staff 0 0 "Jun 1 13:14:00 2020" "Jun 1 13:14:00 2020" "Jul 27 17:51:15 2019" "Jul 25 12:22:26 2019" 4096 0 0 file.txt
7. 使用参考文件设置时间戳(-r)
在 touch 命令中,我们可以使用参考文件来设置文件或目录的时间戳。假设我想在 file.txt 文件上设置与文件 test.txt 文件相同的时间戳, touch 命令中使用 -r 选项可以实现
语法:
touch -r {
参考文件} 真正文件
更新file.txt的时间戳,使其和test.txt的时间戳相同
touch -r file.txt test.txt
使用stat命令查看
MHQ0063:~ xws$ stat file.txt test.txt
16777220 12892326843 -rw-r--r-- 1 xws staff 0 0 "Jun 1 13:14:00 2020" "Jun 1 13:14:00 2020" "Jul 27 17:51:15 2019" "Jul 25 12:22:26 2019" 4096 0 0 file.txt
16777220 12892302901 -rw-r--r-- 1 xws staff 0 169 "Jul 27 18:16:29 2019" "Jun 1 13:14:00 2020" "Jul 27 18:16:28 2019" "Jul 24 18:02:16 2019" 4096 8 0 test.txt
实例练习
使用指令”touch”修改文件”testfile”的时间属性为当前系统时间,输入如下命令:
$ touch testfile #先创建一个testfile
首先,使用ls命令查看testfile文件的属性,如下所示:
$ ls -l testfile #查看文件的时间属性
可以发现原来文件的修改时间为12:04
-rw-r--r-- 1 xws staff 0 7 25 12:04 testfile
执行指令”touch”修改文件属性以后,并再次查看该文件的时间属性,如下所示:
$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 xws staff 0 7 25 12:07 testfile
使用指令”touch”时,若指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件”file”,输入如下命令:
$ touch file #创建一个名为“file”的新的空白文件
touch命令就介绍到这里
参考文章来源:[鸟哥Linux私房菜 基础版-第四版].pdf
整理不易
今天的文章touch命令分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/6697.html