Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何使用脚本在AmazonS3中批量更改文件夹名称_Unix_Amazon Web Services_Amazon S3_Aws Cli - Fatal编程技术网

Unix 如何使用脚本在AmazonS3中批量更改文件夹名称

Unix 如何使用脚本在AmazonS3中批量更改文件夹名称,unix,amazon-web-services,amazon-s3,aws-cli,Unix,Amazon Web Services,Amazon S3,Aws Cli,我上传了一堆图片,但不小心把文件夹命名为空格。现在您无法访问它们,因为URL显然没有空格 我已经下载了aws cli,想知道如何更改文件夹名称?我已经看了文档,但仍然有问题,希望有人能帮我 我尝试了以下命令,但没有成功: aws s3 mv“s3://mybucketname/firstfolder/second folder with spaces/”s3://mybucketname/firstfolder/secondfolderwithspaces/--recursive 如何将“带空格

我上传了一堆图片,但不小心把文件夹命名为空格。现在您无法访问它们,因为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

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

encodeURI("second folder with spaces")
它打印

second%20folder%20with%20spaces
对于批量重命名,它不能像在操作系统(Linux/Windows/Mac)上传统的方式那样进行。在S3上,不能重命名文件,必须复制它们。因此,您必须下载它们的内容,删除它们,并创建新文件


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

encodeURI("second folder with spaces")
它打印

second%20folder%20with%20spaces
对于批量重命名,它不能像在操作系统(Linux/Windows/Mac)上传统的方式那样进行。在S3上,不能重命名文件,必须复制它们。因此,您必须下载它们的内容,删除它们,并创建新文件


我会通过使用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)
脚本循环遍历每个对象,将其复制到一个新键(类似于文件名,但它包含包含目录名的完整路径),然后删除旧对象。它在AmazonS3中完全执行——对象的内容不会被下载/上传


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

我将通过使用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)
脚本循环遍历每个对象,将其复制到一个新键(类似于文件名,但它包含包含目录名的完整路径),然后删除旧对象。它在AmazonS3中完全执行——对象的内容不会被下载/上传


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

您遇到了什么错误?我可以使用mv命令来完成此操作。您也可以使用一些
+
来替换空格,以消除此问题,而无需重命名文件夹。您遇到了什么错误?我可以使用mv命令来完成此操作。您也可以使用一些
+
来替换空格,以消除此问题,而无需重命名文件夹