0

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

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

我尝试了以下命令但没有成功:

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

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

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

for folder in s3:/bucketname/firstfolder: 
     aws s3 mv "folder with spaces" folderwithspaces --recursive
4

2 回答 2

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)

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

修改替换命令以满足您的需要。

于 2014-11-17T11:03:52.247 回答
-1

URL 可以有空格。你必须对它们进行编码。空格字符变为“%20”。如果你有 chrome 或 firefox,打开开发者工具控制台,然后输入

encodeURI("second folder with spaces")

它打印

second%20folder%20with%20spaces

对于批量重命名,它不能以与传统操作系统(Linux/Windows/Mac)上相同的方式完成。在 S3 上,您不能重命名文件,您必须复制它们。因此,您必须下载它们的内容、删除它们和新文件。

Amazon S3 boto:如何重命名存储桶中的文件?

于 2014-07-12T15:05:20.653 回答