Nei*_*ski 80 bash amazon-s3 amazon-web-services aws-cli
我正在启动一个bash脚本,该脚本将在S3中获取路径(如ls命令所指定)并将所有文件对象的内容转储到stdout
.基本上我想复制cat /path/to/files/*
除了S3,例如s3cat '/bucket/path/to/files/*'
.我首先看到的选项是将cp
命令用于临时文件,然后再使用该命令cat
.
有没有人试过这个或类似的或者已经有一个命令我找不到它是什么?
qui*_*ver 128
将所有文件对象的内容转储到stdout.
如果传递命令的-
目标,则可以完成此操作aws s3 cp
.例如, $ aws s3 cp s3://mybucket/stream.txt -
.
你想要做的是这样的事情?::
#!/bin/bash
BUCKET=YOUR-BUCKET-NAME
for key in `aws s3api list-objects --bucket $BUCKET --prefix bucket/path/to/files/ | jq -r '.Contents[].Key'`
do
echo $key
aws s3 cp s3://$BUCKET/$key - | md5sum
done
Run Code Online (Sandbox Code Playgroud)
Dre*_*rew 37
如果您使用的AWS CLI版本不支持复制到" - ",您还可以使用/ dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
Run Code Online (Sandbox Code Playgroud)
您还可能希望该--quiet
标志阻止将如下所示的摘要行附加到输出中:
下载:s3://mybucket/stream.txt到../../dev/stdout
您可以尝试使用s3streamcat,它也支持 bzip、gzip 和 xz 格式。
安装与
sudo pip install s3streamcat
用法:
s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something
Run Code Online (Sandbox Code Playgroud)