【问题标题】:gcloud filter result based on timegcloud 根据时间过滤结果
【发布时间】:2022-01-26 01:06:56
【问题描述】:

我正在尝试在 GCP 上列出机器图像并根据 CreatimeTimestamp 过滤掉结果 - 几个小时/天。 我正在尝试做这样的事情:

gcloud beta compute machine-images list --sort-by "creationTimestamp" --project=XXXXX --format="table(name,creationTimestamp.date('%Y-%m-%d-%T'))" --filter="CREATION_TIMESTAMP.date('%Y-%m-$d-%H:%M:%S')<'$(date -d '3 hours ago' "+%Y-%m-%d-%H:%M:%S")'"

列出 3 小时前的机器映像

【问题讨论】:

    标签: bash datetime google-cloud-platform gcloud


    【解决方案1】:
    更新

    仔细考虑您的问题,我认为可能有比我的答案更简单的方法(如下)。 documentation 建议您可以直接进行日期比较。所以,也许:

    WHEN=$(date +%s --date='3 hours ago')
    gcloud beta compute machine-images list \
    --project=${PROJECT} \
    --format="table(name,creationTimestamp)") \
    --filter="creationTimestamp.date(\"+%s\")>${WHEN}"
    

    gcloud 过滤器不包含外壳,因此您不能包含例如bash 的date 命令在过滤器中。

    我认为(!)这样做的方法是format输出你想要的结果然后过滤。

    IMAGES=$(gcloud beta compute machine-images list \
    --project=${PROJECT} \
    --format="csv[no-heading](name,creationTimestamp.date())")
    
    for IMAGE in ${IMAGES}
    do
      IFS=, read NAME TIMESTAMP <<< ${IMAGE}
      CREATED=$(date +%s --date=${TIMESTAMP}
      WHEN=$(date +%s --date='3 hours ago')
      if [ ${CREATED} -gt ${WHEN} ]
      then
        printf "Image: %s (Creation: %s)\n" NAME TIMESTAMP
      fi
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多