如何使用脚本批量更改Amazon S3中的文件夹名称

Ter*_*how 0 unix amazon-s3 amazon-web-services aws-cli

我上传了一堆图像,但不小心将文件夹命名为空格。现在您无法访问它们,因为网址显然不能有空格。

我已经下载了aws cli,想知道如何更改文件夹名称?我查看了文档,但仍然遇到麻烦,希望有人可以提供帮助。

我尝试了以下命令,但未成功:

aws s3 mv "s3://mybucketname/firstfolder/second folder with spaces/" s3://mybucketname/firstfolder/secondfolderwithspaces/ --recursive

如何将“带空格的第二个文件夹”的名称更改为“ secondfolderwithspaces”?

另外,有没有办法可以遍历这些文件夹?就像是

for folder in s3:/bucketname/firstfolder: 
     aws s3 mv "folder with spaces" folderwithspaces --recursive
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 5

我会使用boto SDK通过python脚本执行此操作:

import boto

conn = boto.s3.connect_to_region('ap-southeast-2')
bucket = conn.get_bucket('bucket-name')
for k in bucket.list():
  if ' ' in k.key:
    bucket.copy_key(k.key.replace(' ', '+'), bucket.name, k.key)
    bucket.delete_key(k.key)
Run Code Online (Sandbox Code Playgroud)

该脚本循环遍历每个对象,将其复制到一个新键(类似于文件名,但是它包含包含目录名的完整路径),然后删除旧对象。它在Amazon S3中完全执行-不下载/上传对象的内容。

修改替换命令以适合您的需求。