touch的使用

1 将文件时间修改为当前时间

touch

touch命令并不是你经常使用的命令,但是继续学习本书时需要用到这个命令,所以现在介绍一下这个命令。有趣的是,虽然touch存在的主要目的是更新文件访问和修改时间,但这并不是你现在要使用这个命令的主要原因。相反,这里要用的是它的辅助功能,不过,这个功能确实比它的主要功能还要有用!

说明 只有获得修改文件的权限,才可以对文件使用touch命令,修改它的时间。否则,touch命令会运行失败。

为了同时更新文件(或文件夹)的访问和修改时间,只需要运行基本的touch命令。

$ ls -l ~/
drwxr-xr-x     848 2005-10-19 11:36 src
drwxr-xr-x    1664 2005-10-18 12:07 todo
drwxr-xr-x     632 2005-10-18 12:25 videos
-rw-r--r--     239 2005-09-10 23:12 wireless.log
$ touch wireless.log
$ ls -l ~/
drwxr-xr-x     848 2005-10-19 11:36 src
drwxr-xr-x    1664 2005-10-18 12:07 todo
drwxr-xr-x     632 2005-10-18 12:25 videos
-rw-r--r--     239 2005-10-19 14:00 wireless.log

 

由于使用了touch命令,wireless.log文件的修改时间和访问时间都修改了,不过ls–l只能显示修改时间。这个文件有一个多月没用过了,但是touch命令现在对它进行了更新,让它看起来好像刚刚使用过(touched)似的。

如果你喜欢,也可以更具体一点儿。如果你只想更新访问时间,就可以使用-a选项(或--time=access)。如果只想更新修改时间,则使用-m(或--time=modify)。

2 将文件时间修改为想要的任意时间

touch -t

请记住,能修改的时间并不只限于当前的日期和时间。相反,只要使用这个选项和一定的模式,就可以修改任何日期和时间:-t [[CC]YY]MMDDhhmm[.ss]。表2-4解释了这个命令中使用的时间模式。

表2-4 用于修改文件时间的时间模式

字 符

含 义

CC

4位年份数字中的前2位字符

YY

2位数字的年份:
• 如果是00~68,则假设年份的前2位数字是20
• 如果是69~99,则假设年份的前2位数字是19
• 如果什么也没有,则假设是当前年份

MM

月份(01~12)

DD

日期(01~31)

hh

小时(01~23)

mm

分钟(00~59)

ss

秒(00~59)

如果你想使用的数字不是普通的两位数,那么在前面补上零是非常重要的,否则时间模式将不起作用。下面是一些带有-t选项的touch命令的例子,通过这些示例来帮助你理解这个命令。

$ ls -l
-rw-r--r--  239 2005-10-19 14:00 wireless.log
$ touch -t 197002160701 wireless.log
$ ls -l
-rw-r--r--  239 1970-02-16 07:01 wireless.log
$ touch -t 9212310000 wireless.log
$ls -l
-rw-r--r--  239 1992-12-31 00:00 wireless.log
$ touch -t 3405170234 wireless.log
$ ls -l
-rw-r--r--  239 2034-05-17 02:34 wireless.log
$ touch -t 10191703 wireless.log
$ls -l
-rw-r--r--  239 2005-10-19 17:03 wireless.log

 

首先,在前面已经将wireless.log的当前日期和时间建立为2005-10-19 14:00。然后,将时间修改为35年前的某个时间:1970-02- 16 07:01。接着再向前一点,跨越20多年到:1992-12-31 00:00。最后飞跃到未来的时间:2034-05-17 02:34(那时Linux计算机将统治世界,人类生活在和平当中,开源事业非常兴旺),然后结束一切回到我们的当前日期和时间。

从这个例子的演示中,你应该能得出一些经验。通过指定完整的4位数字的年份(1970)、月(02)、日期(16)、小时(07)、以及分钟(01),能回到30多年前的时间。不需要指定秒。之后的操作就再也没有指定4位数字的年份。9212310000中的92在69~99的范围内,所以touch命令假设你需要用“19”作为年份的前两位数字,而3405170234中的34介于00~68,所以touch命令会用“20”作为年份的基础位(前两位)。最后一次使用touch命令时,根本就没有指定年份,只设定了月份(10)、日期(19)、以及小时(17),这时touch命令会明白你想指定的是当前年份(2009)。理解了如何操作touch命令,就可以在需要的时候修改文件的时间戳了。

3 创建新的空文件

touch

这一用法不是很多人使用touch命令的主要原因。如果你将touch命令用于不存在的文件时,会产生一个有趣的效果:它将使用你指定的文件名来生成一个空文件。

$ ls -l ~/

drwxr-xr-x   848 2005-10-19 11:36 src
drwxr-xr-x   632 2005-10-18 12:25 videos

$ touch test.txt
$ ls -l ~/

drwxr-xr-x   848 2005-10-19 11:36 src
-rw-r--r--     0 2005-10-19 23:41 test.txt
drwxr-xr-x   632 2005-10-18 12:25 videos

 

为什么要这样用touch命令呢?你可能想现在先创建一个文件,以后再填充内容。或者你在尝试新发现的命令,需要创建几个文件来执行测试。这些都是使用touch命令的很好理由,当你开始更深入地学习shell时,会发现更多这样的情况。

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hamilton_Huan

原创不易,结合业务原创更不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值