AWS CLIを使用してバケットのコンテンツをクエリし、特定のファイルが存在するかどうかを確認したいのですが、バケットには何千ものファイルが含まれています。パターンに一致するキー名のみを表示するように結果をフィルタリングするにはどうすればよいですか?例えば:
aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"
--query
引数はJMESPath式を使用します。 JMESPathには、文字列パターンを検索できる内部関数contains
があります。
これにより、望ましい結果が得られます。
aws s3api list-objects --bucket myBucketName --query "Contents[?contains(Key, `mySearchPattern`)]"
(Linuxでは、単一引用符を使用する必要がありました'
バックティックではなく`
mySearchPattern
あたり。)
特定の文字を含むキーstartingを検索する場合は、--prefix
引数:
aws s3api list-objects --bucket myBucketName --prefix "myPrefixToSearchFor"
Ubuntu 14で試してみました。awscli1.2 --query "Contents [?contains(Key、 'stati')]。Key" --query "Contents [?contains(Key、\ 'stati \')]。Key"-クエリ "Contents [?contains(Key、stati
)]。Key"
不正なトークン値 '?contains(Key、' stati ')]。Key'
Awsバージョンを1.16にアップグレードした後、
--query "コンテンツ[?contains(Key、 'stati')]。Key"