2016-10-04 3 views
5

Кажется, так просто, но не получив синтаксис правильно. Я хочу знать, существует ли файл в моем ведро s3 с использованием подстановочных знаков. Что-то вродеПроверьте, существует ли файл в s3 с использованием ls и подстановочного знака

aws s3 ls s3://my-bucket/folder/*myfile* 

Цель состоит в том, чтобы увидеть, если файл с именем 2016_myfile.txt или файл с именем 2011_myfile.csv существует в этом ведре.

Если я запустил команду, она ничего не возвращает, хотя я знаю, что этот файл существует.

+0

Очень неэффективно, но почему бы не сделать что-то вроде «aws s3 ls s3: // my-bucket/folder/| grep myfile»? То есть, если вы настаиваете на использовании CLI. Сценарий python с использованием Boto будет намного более эффективным, хотя это не одна строка. –

+0

@GilAdirim На самом деле это сработает. Я был просто удивлен, что aws-cli не предоставил что-то вроде этого и думал, что мне что-то не хватает – Nicros

+0

@GilAdirim Я смотрел на Boto, и я не вижу, как он поддерживает подстановочные знаки, у вас есть указатель на вас может обеспечить? –

ответ

6

(повторно составлен из комментариев, как представляется, это ответили на вопрос)

Я сам пробовал, и не использовать подстановочные знаки в AWS-кли, и в соответствии с docs, это не поддерживается. решение Простейшее (хотя не менее эффективный) будет использовать Grep:

aws s3 ls s3://my-bucket/folder/ | grep myfile 

В качестве альтернативы, вы могли бы написать короткий питон/другой сценарий, чтобы сделать это более эффективно (но не в одной команде)

+0

Я думаю, что это работает достаточно хорошо. Благодаря! – Nicros

0

s3cmd также работает для меня с grep.

s3cmd ls --recursive s3://mybucket/folder/folder2 | grep filename 
1

S3 не поддерживает список подстановочных знаков. Вам нужно указать все файлы и grep.

aws s3 ls s3://mybucket/folder --recursive 

Выше команда предоставит список файлов под вашей папкой, также ищет файлы внутри папки. Просто Grep ваше имя файла

aws s3 ls s3://mybucket/folder --recursive |grep filename 

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