【问题标题】:Issue with Copying Files between Timestamp in UNIX在 UNIX 中的时间戳之间复制文件的问题
【发布时间】:2014-06-09 17:30:12
【问题描述】:

我的要求是提取 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>\;

问题:我想在 START 时间之前和 END 时间之后 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' 之间的文件被复制。我坚持这一点。请帮忙。

哈里

【问题讨论】:

    标签: date unix timestamp


    【解决方案1】:

    您可以使用 date 进行时间计算,也不需要所有这些 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

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

    【讨论】:

    • 删除了“%S”格式以创建时间戳。 early=$(date -d "$START+1000 -10 minutes" +%Y%m%d%H%M) touch -t $earlier old.txt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多