2.21 将文件时间修改为想要的任意时间
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
命令,就可以在需要的时候修改文件的时间戳了。