aws cli s3 存储桶删除具有日期条件的对象

Jay*_*Zee 3 amazon-s3 aws-cli

我如何以递归方式删除具有日期条件的 aws cli s3 存储桶删除对象

我正在使用此命令进行列表

aws s3 ls --recursive s3://uat-files-transfer-storage/ | awk '$1 < "2018-02-01 11:13:29" {print $0}' | sort -n
Run Code Online (Sandbox Code Playgroud)

它运行完美,但是当我将此命令与 rm 一起使用时,它会删除所有文件

aws s3 rm --recursive s3://uat-files-transfer-storage/ | awk '$1 < "2018-02-01 11:13:29" {print $0}' | sort -n
Run Code Online (Sandbox Code Playgroud)

任何解决方案

小智 7

你在正确的轨道上。要了解发生了什么,让我们逐步查看您的命令正在执行的操作。

aws s3 ls --recursive s3://uat-files-transfer-storage/ | awk '$1 < "2018-02-01 11:13:29" {print $0}' | sort -n

此命令递归列出存储桶中的所有文件,检查特定条件的输出,然后对结果输出行进行排序。

aws s3 rm --recursive s3://uat-files-transfer-storage/ | awk '$1 < "2018-02-01 11:13:29" {print $0}' | sort -n

此命令以递归方式删除存储桶中的所有文件,检查特定条件的输出,然后对结果输出行进行排序。所以第二个命令首先删除你的所有文件!

您要做的是列出存储桶中的所有文件,检查它们是否满足特定条件,然后将其删除。这应该有效:

aws s3 ls --recursive s3://uat-files-transfer-storage/ | awk '$1 < "2018-02-01 11:13:29" {print $4}' | xargs -n1 -t -I 'KEY' aws s3 rm s3://uat-files-transfer-storage/'KEY'

当心!这不会在删除之前提示您,而且这是一种错误地清理整个存储桶的简单方法。