在UNIX中的时间戳之间复制文件的问题

时间:2014-06-09 17:30:13

标签: date unix timestamp

我的要求是提取在2个时间戳之间生成的所有文件(时间戳的用户输入应采用格式“YYYY-MM-DD HH:24MI:SS”。我使用START和END变量进行另一个查询我无法改变格式)

echo "Enter Start Time ( Format :- DD-MM-YYYY HH24:MI:SS )"
read START
start=$(echo $START|sed 's/-//g'|sed 's/://g'|sed 's/ //g'|sed 's ..$  ')
echo "Enter End Time  (Format :- DD-MM-YYYY HH24:MI:SS )"
read END
end=$(echo $END|sed 's/-//g'|sed 's/://g'|sed 's/ //g'|sed 's ..$  ')
touch -t $start old.txt
touch -t $end new.txt
find <SOURCE> -name "*.sarm" -type f -cnewer old.txt ! -newernew.txt -exec cp -p "{}" <TARGET>\;

问题:我想在开始时间之前和结束时间之后10分钟拉取文件。这应该对用户透明。

示例: 用户将输入如下              ``START ='2014-05-06 00:00:00' END ='2014-05-06 02:00:00'`

复制了'2014-05-05 23:50:00' and '2014-05-06 02:10:00'之间修改日期的文件。我对此感到困惑。请协助。

1 个答案:

答案 0 :(得分:0)

您可以使用日期进行时间计算,也不需要所有这些sed命令来实现您想要的效果:

root@lopobox:~# date -d "2014-05-06 00:00:00+000 -10 minutes" +%Y%m%d%H%M%S
20140505235000
root@lopobox:~# date -d "2014-05-06 00:00:00+000 +10 minutes" +%Y%m%d%H%M%S
20140506001000

PS。请注意,在这种情况下,您可能需要调整时区,我使用UTC +000。如果我想调整为BST,我会使用+100

我希望这可以帮助您解决问题。