2016-12-30 68 views
1

我可以使用下面的命令如何从AWS s3中删除最近5次最近更新/新文件以外的所有文件?

aws s3 ls s3://somebucket/ --recursive | sort | tail -n 5 | awk '{print $4}' 

现在我需要删除AWS S3的所有文件除了最后5个文件,这是从上面AWS命令获取获取从AWS S3在过去五年更新的文件。

说这个命令取得1.txt,2.txt,3.txt,4.txt,5.txt。我需要删除所有来自AWS S3的除1.txt,2.txt,3.txt,4.txt,and 5.txt。多--exclude选项

+0

Stack Overflow是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww

回答

4

使用AWS s3 rm命令(我假设的最后5个文件没有一个模式下掉落)

aws s3 rm s3://somebucket/ --recursive --exclude "somebucket/1.txt" --exclude "somebucket/2.txt" --exclude "somebucket/3.txt" --exclude "somebucket/4.txt" --exclude "somebucket/5.txt" 

注意:请确保您有--dryrun选项尝试,验证文件是在实际删除文件之前删除不包含5个文件。

0

使用负数与head让所有,但最后n行:

aws s3 ls s3://somebucket/ --recursive | sort | head -n -5 | while read -r line ; do 
    echo "Removing ${line}" 
    aws s3 rm s3://somebucket/${line} 
done