[英]How do I delete all except the latest 5 recently updated/new files from AWS s3?
我可以使用以下命令從AWS S3獲取最新的五個更新文件
aws s3 ls s3://somebucket/ --recursive | sort | tail -n 5 | awk '{print $4}'
現在,我需要刪除AWS S3中的所有文件,但最后5個文件是從AWS的上述命令中提取的。
說命令獲取1.txt,2.txt,3.txt,4.txt,5.txt
。 我需要從AWS S3中刪除1.txt,2.txt,3.txt,4.txt,and 5.txt
。
將AWS s3 rm命令與多個--exclude
選項一起使用(我假設最后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個文件。
對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
我結合了多種解決方案,並提出了刪除最后30個文件的方法。 請注意,需要兩種排序方式才能同時按日期和時間進行排序。 這也可以處理帶有空格的文件。
aws s3 ls s3://your-bucket/ --recursive | sort -k1 | sort -k2 | head -n -30 | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//' | while read -r line ; do
echo "Removing \"${line}\"";
aws s3 rm "s3://your-bucket/${line}";
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.