用于在s3存储桶中搜索文件的AWS CLI

时间:2018-08-14 20:25:40

标签: aws-cli

我想在s3存储桶中搜索文件名abc.zip,并且有将近60个存储桶,每个存储桶都有2到3个级别的子目录或文件夹。我尝试使用AWS CLI命令执行搜索,以下是其中的命令我尝试过,但是即使文件存储在存储桶中。文件的结果也没有显示。

agg

对于所有上述命令执行,我在命令行中看不到文件名,并且当我手动检查存储桶时,文件存在。 有什么办法可以找到该文件。

3 个答案:

答案 0 :(得分:4)

嗯。 我从#1使用了您的命令,而没有使用“ --recursive”,因为这会抛出Unknown options: --recursive。我正在搜索的文件位于存储桶的第二层,并且已找到。也没有使用--region

我的猜测是您正在使用某些旧版本的AWS Client或指向错误的存储桶。 我的工作命令:

aws s3api list-objects --bucket XXXXX --query "Contents[?contains(Key, 'animate.css')]"

[
{
    "LastModified": "2015-06-14T23:29:03.000Z",
    "ETag": "\"e5612f9c5bc799b8b129e9200574dfd2\"",
    "StorageClass": "STANDARD",
    "Key": "css/animate.css",
    "Owner": {
        "DisplayName": "XXXX",
        "ID": "XXXX"
    },
    "Size": 78032
}
]

如果您决定升级CLI客户端:https://github.com/aws/aws-cli/tree/master 当前版本为awscli-1.15.77,您可以通过aws --version进行检查。

答案 1 :(得分:0)

我知道这很古老,但是我找到了一种无需将文本传递到grep的方法...

public function getUsers()
{
    return $this
    ->join('school_users', function($join) {
        $join->on('school_users.user_id', '=', $this->table.'.id')
             ->whereColumn('school_users.user_id', 'school_users.school_id');
    })
    ->select
        (

            $this->table.'.*',
            'school_users.school_id as school_id'
        ) 
    ->orderBy($this->table.'.id','desc')
    ->get();   
    }

答案 2 :(得分:-1)

我以以下方式尝试

aws s3 ls s3://Bucket1/folder1/2019/ --recursive |grep filename.csv

这将输出文件所在的实际路径

2019-04-05 01:18:35     111111 folder1/2019/03/20/filename.csv

希望这会有所帮助!