【问题标题】: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