2014-06-09 70 views
0

我的需求是拉取两个时间戳之间生成的所有文件(用户输入时间戳的格式应该是“YYYY-MM-DD HH:24MI:SS”。另一个查询开始和结束的变量,因此我不能改变格式)在UNIX中的时间戳之间复制文件的问题

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>\; 

问题:我想开始时间之前和之后END time.This应该是透明的,用户拉动文件10分钟。

实施例: 用户将进入下面 ``START = '2014年5月6日00:00:00' END =“2014年5月6日02:00:00'`

文件修改日期在'2014-05-05 23:50:00' and '2014-05-06 02:10:00'之间被复制。我坚持这一点。请协助。

哈日

回答

0

您可以使用日期做时间的计算,你也并不需要所有的sed命令来实现你想要的:

[email protected]:~# date -d "2014-05-06 00:00:00+000 -10 minutes" +%Y%m%d%H%M%S 
20140505235000 
[email protected]:~# date -d "2014-05-06 00:00:00+000 +10 minutes" +%Y%m%d%H%M%S 
20140506001000 

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

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

+1

删除了“%S”格式以创建时间戳。先前= $(日期-d“$ START + 1000 -10分钟”+%Y%m%d%H%M) touch -t $ early old.txt – user2727576