![将文件触摸到未来时间戳](https://linux22.com/image/47670/%E5%B0%86%E6%96%87%E4%BB%B6%E8%A7%A6%E6%91%B8%E5%88%B0%E6%9C%AA%E6%9D%A5%E6%97%B6%E9%97%B4%E6%88%B3.png)
我使用以下命令创建了 30 分钟前的文件
TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" $HOME/reference
同样,我如何创建未来 30 分钟的文件。
例如:在下午 5:00 我想触摸下午 5:30 的文件
答案1
只需添加一个减号:
TZ=ZZZ0 touch -t "$(TZ=ZZZ-0:30 date +%Y%m%d%H%M.%S)" $HOME/reference
或者反转你的时区技巧:
TZ=ZZZ0:30 touch -t "$(TZ=ZZZ0 date +%Y%m%d%H%M.%S)" $HOME/reference
如果您需要超出时区偏移范围,众所周知,标准 shell 实用程序缺乏操作日期的方法。许多人已经完成了在 Bourne shell 中实现日期计算的工作,因此一种选择是下载其中之一(其中列出了一些)Unix shell 脚本中的日期算术)。另一种选择是安装GNU 核心工具,具体来说是它的date
命令它可以让你排版日期如now + 30 minutes
。您还可以安装更复杂的脚本环境(例如 Perl)并使用其日期操作库。
答案2
使用该命令:
touch -t "$( printf '%(%Y%m%d%H%M.%S)T\n' 'now +30 minutes' )" file
使用-t
oftouch
您可以指定日期。并且使用ksh
printf 也可以格式化日期。使用%(date-format)T
,请参阅 的手册页ksh
。
答案3
touch
对于遇到这个问题的GNU朝圣者来说:
您还可以使用-d
的参数touch
。
touch -d "now +30 minutes" $HOME/reference