2016-12-30 9 views
1

я могу принести последние пять обновленные файлы из AWS S3 с помощью следующей командыКак удалить все, кроме последних 5 недавно обновленных/новых файлов с 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.

+0

Stack Overflow это сайт для программирования и разработки вопросов. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

ответ

4

Используйте 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 файлов до фактического удаления файлов.

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 

 Смежные вопросы

  • Нет связанных вопросов^_^