このstackoverflowの回答は大いに役立ちました。 ただし、指定されたバケット内のすべてのPDFを検索したいと思います。
*.pdf
Enter
を押します何も起こりません。ワイルドカードまたは正規表現を使用して、オンラインS3 GUIコンソールを介してバケット検索結果をフィルタリングする方法はありますか?
コメントで述べたように、AmazonのUIは、独自のドキュメントに従って、プレフィックスによる検索にのみ使用できます。
http://docs.aws.Amazon.com/AmazonS3/latest/UG/searching-for-objects-by-prefix.html
検索方法は他にもありますが、少し手間がかかります。 2つのオプション、つまり AWS-CLI applicationまたは Boto の名前をPythonに付けます。
私はこの投稿が古いことを知っていますが、Googleのリストでs3検索の上位にあり、承認された回答がありません。 Harishによるもう1つの答えは、死んだサイトにリンクすることです。
AWS CLI検索: AWSコンソールでは、ディレクトリ内のオブジェクトのみを検索できます。ディレクトリ全体ではなく、ファイルのプレフィックス名のみを使用して検索できます(S3検索の制限)。
最良の方法は、Linux OSで以下のコマンドを使用してAWS CLIを使用することです
aws s3 ls s3:// bucket_name/--recursive | grep search_Word |カット-c 32-
ワイルドカードを使用したファイルの検索 aws s3 ls s3:// bucket_name/--recursive | grep * .pdf
--dryrun
フラグを指定してコピー関数を使用できます。
aws s3 ls s3://your-bucket/any-prefix/ .\ --recursive --exclude * --include *.pdf --dryrun
PDFであるすべてのファイルが表示されます。
Pythonでboto3を使用する場合、ファイルを見つけるのは非常に簡単です。'bucket 'をバケットの名前に置き換えます。
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
for obj in bucket.objects.all():
if '.pdf' in obj.key:
print(obj.key)
私は自分のプロジェクトの1つでこれを使用しましたが、少しハードコーディングしています
import subprocess
bucket = "Abcd"
command = "aws s3 ls s3://"+ bucket + "/sub_dir/ | grep '.csv'"
listofitems = subprocess.check_output(command, Shell=True,)
listofitems = listofitems.decode('utf-8')
print([item.split(" ")[-1] for item in listofitems.split("\n")[:-1]])