【发布时间】:2015-04-17 07:43:12
【问题描述】:
我需要选择过去 5 分钟内添加到特定目录的所有文件并将它们复制到不同的目录。我正在使用不支持 amin、cmin 和 mmin 的 HP-UX 操作系统。 B/c,我正在创建一个临时文件,并将使用 find -newer 命令将文件与更改时间戳(5 分钟前)的临时文件进行比较。 HP-UX 不支持 'touch' 命令的 -d 选项,所以我不能这样做:
touch -d "5 mins ago" temp
我尝试使用以下解决方案,但在使用时收到错误(非法变量名):
TZ=ZZZ0 touch -t "$(TZ=ZZZ0:5 date +%Y%m%d%H%M.%S)" temp
问:有谁知道如何选择过去 5 分钟内添加到目录中的文件,而无需操作时间标签(分钟、天、月……)? p>
注意:我的脚本将每 5 分钟运行一次,但我需要将解决方案包含在脚本中(即,不取决于它每 5 分钟运行一次的事实)。我无法对时间戳进行硬编码。
谢谢,
马特
【问题讨论】:
-
脚本8分钟没有运行,你还只想要5分钟吗?要获取“未复制”文件,请查找最后复制的文件,然后搜索比该文件更新的文件。否则,您需要调用一个脚本来计算 5 分钟前的时间戳并将其用于触摸。
-
解决方案不符合您的注释:每 5 分钟创建一个 crontab 条目触摸一个文件/使用触摸临时完成您的脚本(由 cron 启动?)。也许改变你的要求?
-
您不需要使用
touch -d。只需使用以下逻辑:1)触摸temp22)睡眠至少1 秒,因为这是find的粒度。 3) 找到所有比temp更新的文件并处理它们 4)mv temp2 temp5) 睡多久就睡多久,然后转到 1)。 -
如果您通过每 5 分钟运行一个全新进程而不是休眠 5 分钟来实现它,请不要执行休眠的最后一步。但是您还需要考虑处理所有文件需要超过 5 分钟的时间。您不希望同时运行多个脚本实例。可能需要使用某种锁定。
-
我正在寻找一个很长的脚本,我在某个地方找到了支持各种日期/时间计算的脚本。现在我发现了一些听起来很简单的东西:blog.fpmurphy.com/2008/10/ksh93-date-manipulation.html 这对你有用吗?