найти и заменить строку в xargs {} при вызове списка объектов s3api? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть объекты s3 bucket, как показано ниже:

my_bucket/inside/another/2018-10-09/hello.txt
my_bucket/inside/another/2018-10-09/hello.json
my_bucket/inside/another/2018-10-08/hello.java
my_bucket/inside/another/2018-10-08/hello.json
my_bucket/inside/another/2018-10-10/hello.json

Я пытаюсь получить локальный каталог, например, новый, как показано ниже:

new/2018-10-09/hello.json
new/2018-10-08/hello.json
new/2018-10-10/hello.json

Пришел с командой, чтобы вытащитьфайлы, но я хочу изменить структуру каталогов при записи локальных файлов:

aws s3api list-objects --bucket "my_bucket" --output text --query "Contents[?(LastModified>='2018-10-07' && contains(Key,'.json'))].{Key: Key}" | xargs -I {} aws s3 cp my_bucket/{} new/{}

Я ищу способ заменить структуру каталогов на свои собственные без изменения значения при вызове команды копирования s3.например, возможно что-то вроде ~

aws s3api list-objects --bucket "my_bucket" --output text --query "Contents[?(LastModified>='2018-10-07' && contains(Key,'.json'))].{Key: Key}" | xargs -I {} aws s3 cp my_bucket/{} new/`echo {} | sed 's/inside\/another\//my_directory/g'`

Хотя это скорее unix-запрос, я открыт для предложений, которые позволят мне обработать через s3api, если будут доступны опции.

PS для целей тестирования можно также рассмотреть ниже:

where list.txt contains: 
my_bucket/inside/another/2018-10-09/hello.txt
my_bucket/inside/another/2018-10-09/hello.json
my_bucket/inside/another/2018-10-08/hello.java
my_bucket/inside/another/2018-10-08/hello.json
my_bucket/inside/another/2018-10-10/hello.json

команда:

cat list.txt | xargs -I {} aws s3 cp s3://my_bucket/{} new/`echo {} | sed 's/inside\/another\//my_directory/g'`
...