将文件触摸到未来时间戳

将文件触摸到未来时间戳

我使用以下命令创建了 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

使用-toftouch您可以指定日期。并且使用kshprintf 也可以格式化日期。使用%(date-format)T,请参阅 的手册页ksh

答案3

touch对于遇到这个问题的GNU朝圣者来说:

您还可以使用-d的参数touch

touch -d "now +30 minutes" $HOME/reference

相关内容