Vinicius Peres
Vinicius Peres

Reputation: 101

Delete files after awk command

I'm setting to do an ls in a bucket. Make a print in folder name remove the /, do sorting and remove the last 3. which will be the most recent, then I'm setting remove the folds except for those 3 recent ones.

for i in $(aws s3 ls s3://portal-storage-site | awk -F '-' '{print $2}' | sed 's/\///g'| sort -n| tail -3| xargs| sed 's/ /|/g'); 
do aws s3 ls s3://portal-storage-site| grep -Ev "PRE\s.*\-($i)\/" | awk '{print $2}'|xargs echo "aws s3 ls s3://portal-storage-site/"; done

I expect the output is exec

aws s3 ls s3://portal-storage-site/2e5d0599-120/
aws s3 ls s3://portal-storage-site/6f08a223-118/
aws s3 ls s3://portal-storage-site/ba67667e-121/
aws s3 ls s3://portal-storage-site/ba67667e-122/

but the actual is

aws s3 ls s3://portal-storage-site/2e5d0599-119/ 2e5d0599-120/ 6f08a223-118/ ba67667e-121/ ba67667e-122/

Upvotes: 0

Views: 233

Answers (1)

Okto
Okto

Reputation: 96

Instead of using xargs you can try to compose your second aws ls command in awk and send it to bash:

aws s3 ls s3://portal-storage-site| grep -Ev "PRE\s.*\-($i)\/" | awk '{print "aws s3 ls s3://portal-storage-site/" $2}'| bash

Upvotes: 2

Related Questions