日期:额外的操作数' +%s'

时间:2018-04-12 13:59:24

标签: linux bash ubuntu amazon-s3

我遇到了一个轻微的错误,即每次发言都没有导致我的程序崩溃,但它会让它爬行。它一直给我错误:

#!/bin/bash
# Usage: ./s3DeleteByDate "bucketname" "2m"
aws s3 ls s3://$1 | grep " DIR " -v | while read -r line;
do
 createDate=$(echo "$line" | awk '{print $1" "$2}')
 createDate=`date -d "%Y-%m-%d %H:%M" "$createDate" +%s`
 olderThan=`date -d $2 +%s`
 if [[ $createDate -lt $olderThan ]]
  then
    fileName=`echo $line|awk {'print $4'}`
    if [[ $fileName != "" ]]
      then
        aws s3 rm  s3://$1"$fileName" --exclude "*" --include "*.tmp"
    fi
 fi
done;

它似乎真正影响了它可以处理的速度,因为我计划删除数十万个日志文件。这是有问题的程序:

id=\"(CALLERID|GR_BUS|label)\"(\s*value=\"(\S*)\")?

2 个答案:

答案 0 :(得分:1)

此行中有两个格式说明符:

createDate=`date -d "%Y-%m-%d %H:%M" "$createDate" +%s`

据推测,您打算使用以下任一方式格式化$createDate

createDate=`date -d "$createDate" +"%Y-%m-%d %H:%M"`

或:

createDate=`date -d "$createDate" +%s`

我的钱在第二个,因为您稍后在if中使用数字比较。

答案 1 :(得分:0)

我将第7行更改为:date +%s -d" $ createDate"。
这是有效的,因为它是一个GNU日期,它不允许您指定日期的输入格式。这可以解决错误。