我想从现有的bucket文件夹下载最新的2个文件,有人能告诉我如何在shell脚本中实现这一点吗?
我知道下面的命令列出了目录中最新的两个文件,但我如何使用aws cp
将最新的2个文件下载到我的目录?
aws s3 ls $BUCKET --recursive | sort | tail -n 2 | awk '{print $4}'
应该这样做:
LIST=$(aws s3 ls $BUCKET --recursive | sort | tail -n 2 | awk '{print $4}')
for x in $LIST; do
aws s3 cp s3://$BUCKET/$x .
done
如果使用反向排序并强制awk只处理前2条记录,则不需要在此处使用tail。您还可以使用系统内置的awk函数来保存循环。
aws s3 ls $BUCKET --recursive | sort -r | awk 'NR<=2 { system("aws s3 ls "$4"/$x .")
请注意在使用系统之前打印命令的重要性,以确保在执行之前正确构建命令。