Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm running into a slight error that's not crashing my program per say but it brings it to a crawl. It keeps giving me the error:

date: extra operand '+%s'

It seems to really impact the speed of what it can process which is concerning seeing as I plan on deleting hundreds of thousands of log files. Here is the program in question:

#!/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;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
257 views
Welcome To Ask or Share your Answers For Others

1 Answer

You have two format specifiers in this line:

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

Presumably you meant to format $createDate using either:

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

or:

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

My money is on the second one, since you later use a numerical comparison in your if.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...