Amazon S3中是否有重命名文件和文件夹的功能?欢迎提出相关建议。


当前回答

要重命名文件夹(从技术上讲,文件夹是一组对象,以公共前缀作为键),您可以使用aws CLI move命令带——recursive选项。

aws s3 mv s3://bucket/old_folder s3://bucket/new_folder --recursive

其他回答

您可以使用AWS CLI命令来mv文件

文件和文件夹实际上是S3中的对象。你应该使用PUT OBJECT COPY来重命名它们。参见http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html

如果您想重命名s3文件夹中的许多文件,可以运行以下脚本。

    FILES=$(aws s3api list-objects --bucket your_bucket --prefix 'your_path' --delimiter '/'  | jq -r '.Contents[] | select(.Size > 0) | .Key' | sed '<your_rename_here>')
     for i in $FILES
     do
      aws s3 mv s3://<your_bucket>/${i}.gz s3://<your_bucket>/${i}
     done   

S3DirectoryInfo有一个MoveTo方法,它将把一个目录移动到另一个目录,这样移动的目录将成为另一个目录的子目录,其名称与原来的目录相同。

下面的扩展方法将一个目录移动到另一个目录,即移动的目录将成为另一个目录。它实际上所做的是创建新目录,将旧目录中的所有内容移到该目录中,然后删除旧目录。

public static class S3DirectoryInfoExtensions
{
    public static S3DirectoryInfo Move(this S3DirectoryInfo fromDir, S3DirectoryInfo toDir)
    {
        if (toDir.Exists)
            throw new ArgumentException("Destination for Rename operation already exists", "toDir");
        toDir.Create();
        foreach (var d in fromDir.EnumerateDirectories())
            d.MoveTo(toDir);
        foreach (var f in fromDir.EnumerateFiles())
            f.MoveTo(toDir);
        fromDir.Delete();
        return toDir;
    }
}

您可以使用AWS CLI或s3cmd命令重命名AWS S3桶中的文件和文件夹。

使用S3cmd,使用以下语法重命名文件夹,

s3cmd --recursive mv s3://<s3_bucketname>/<old_foldername>/ s3://<s3_bucketname>/<new_folder_name>

使用AWS CLI,使用以下语法重命名文件夹,

aws s3 --recursive mv s3://<s3_bucketname>/<old_foldername>/ s3://<s3_bucketname>/<new_folder_name>