touch用来改变文件的时间属性
touch filename 同时修改文件的访问时间和修改时间为系统当前时间
touch -a filename 只将文件的访问时间改为系统当前时间
touch -m filename 只将文件的修改时间设定为当前系统时间
touch -c filename 如果指定的文件不存在,不创建这个文件
touch -t [[CC]YY]MMDDhhmm[.ss] filename
CC 4位年份数字中的前2位字符
YY2位数字的年份:
• 如果是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-3100:00 。最后飞跃到未来的时间: 2034-05-1702: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 命令,就可以在需要的时候修改文件的时间戳了。