touch命令

touch命令touch命令Linuxtouch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls-l可以显示档案的时间记录语法:touch[-acfm][-d<日期时间>][-r<参考文件或目录>][-t<日期时间>][–help][–version][文件或目录…]参数说明:参数说明…

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 列出版本讯息

实例演示

  1. 使用 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
  1. 改变/更新文件和目录的访问时间

假设我们想要改变名为 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

在这里插入图片描述

  1. 改变目录的访问时间

假设我们在 /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/
  1. 更改访问时间而不用创建新文件

在某些情况下,如果文件存在,我们希望更改文件的访问时间,并避免创建文件。在 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
  1. 更改文件和目录的修改时间

在 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/
  1. 将访问和修改时间设置为特定的日期和时间

每当我们使用 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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注