簡體   English   中英

如何從AWS s3中刪除除最近5個最近更新/新文件以外的所有文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM