【发布时间】:2014-01-29 04:09:42
【问题描述】:
我的目录中有基于日期但没有明显日期标记的文件。
File_yyyymmdd_record.log
这些在目录中存放了几年。 现在,如果这些只是数字,我需要做的就是获取差异并增加一个计数器来推送值
var=substring( File_yyyymmdd_record.log ) /* get the yyyymmdd part */
var2=substring( File2_yyyymmdd_record.log ) /* get the yyyymmdd part */
delta=var2-var1
set i=delta and loop through to get the values for all these recordID's ( record ID is the yyyymmdd part )
问题是如果我在目录中有 2 个不同的月份和年份,比如 20131210 和 20140110 差异不会给该目录中的所有记录ID,因为当它溢出到下个月时,纯数字计算不适用-它应该是基于日期的计算。 我想要做的是使用 2 个输入参数到 shell
shell.sh recordID1 recordID2
并基于这些,它将找到所有记录并将它们存储在某个地方并循环遍历每个记录作为这样的输入
find <dir> -iname recordID* ...<some awk and sed here> |
while read recordID ;
do <stuff >
done
无论如何,这可以在两种情况下实现—— 首先是日期计算部分,另一个是存储这些记录 ID,以便我可以循环浏览它们。也许将它们回显到一个 tmp 文件是一劳永逸的。
对于日期计算部分 - 我试过这个并且它有效。但不确定它是否会在一段时间/情况下动摇
echo $((($(date -u -d 2010-04-29 +%s) - $(date -u -d 2010-03-28 +%s)) / 86400))
因此,将 recordID1 设为 20100328,我有 32 天的 recordID 可以在该目录中查找。 您必须将日期从 recordID1 提前 32 天并将它们存储在某个地方。 怎样才能做到最好。
【问题讨论】: