寻找AWK替代品以加快此命令的速度

我一直在使用AWK来执行此命令,但是它太慢了。

必须有一种更快的方法来处理来自aws s3 ls command

的列表
s5cmd ls s3://bucket-name/* | awk -v AWS_BUCKET="bucket-name" '{cmd="aws s3api put-object-acl --access-control-policy file:///access_policy.json --bucket " AWS_BUCKET " --key "$5; system(cmd); print $5}'

这基本上列出了所有对象,然后对其应用ACL。

有什么想法吗?

dongyingyifeng 回答:寻找AWK替代品以加快此命令的速度

对我来说,答案是两个答案的组合

s5cmd ls s3://bucket-name/* |
  awk -v AWS_BUCKET="bucket-name" '{
    printf "aws s3api put-object-acl --access-control-policy file:///access_policy.json --bucket %s --key %s\n",AWS_BUCKET,$5
  }' |
  parallel -j 32

这大大加快了该命令的执行速度,谢谢Glenn Jackman和Mark Setchell

,

您可能希望只打印所有命令,然后将输出通过管道输送到system(cmd)中以执行它们,而不是对每一行都进行sh

s5cmd ls s3://bucket-name/* |
  awk -v AWS_BUCKET="bucket-name" -v '{
    printf "aws s3api put-object-acl --access-control-policy file:///access_policy.json --bucket %s --key %s\n",$5
  }' |
  sh

您那里有流浪-v。我认为这是一个错字,或者您删除了一些敏感内容。

本文链接:https://www.f2er.com/3142759.html

大家都在问