web-dev-qa-db-fra.com

Vérifiez si le fichier existe dans s3 en utilisant ls et le caractère générique

Semble si simple, mais pas la bonne syntaxe. Je veux savoir si un fichier existe dans mon compartiment s3 à l'aide de caractères génériques. Quelque chose comme

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

Le but est de voir si un fichier appelé 2016_myfile.txt ou un fichier appelé 2011_myfile.csv existe dans ce compartiment.

Si j'exécute la commande, elle ne renvoie rien même si je sais que ce fichier existe là.

13
Nicros

(remanié du commentaire car il semble que cela ait répondu à la question)

J'ai moi-même essayé et échoué à utiliser des caractères génériques dans aws-cli, et selon le docs , ce n'est pas actuellement pris en charge. La solution la plus simple (mais la moins efficace) serait d'utiliser grep:

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

Alternativement, vous pouvez écrire un court script python/autre pour le faire plus efficacement (mais pas en une seule commande)

15
Gil Adirim

S3 ne prend pas en charge la liste des caractères génériques. Vous devez lister tous les fichiers et le grep.

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

La commande ci-dessus donnera la liste des fichiers sous votre dossier, elle recherche également les fichiers à l'intérieur du dossier. Grep juste votre nom de fichier

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

Supposons que si vous souhaitez rechercher plusieurs fichiers, créez une expression régulière de ceux-ci et grepez-la.

7
skipper21

s3cmd fonctionne également pour moi avec grep.

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