2014-12-03 4 views
11

से मेल खाने वाली कुंजी ढूंढने के लिए परिणाम हैं I एक बाल्टी की सामग्री पूछने के लिए एडब्ल्यूएस सीएलआई का उपयोग करना चाहते हैं और देखें कि कोई विशेष फ़ाइल मौजूद है या नहीं, लेकिन बाल्टी में हजारों फाइलें हैं। मैं परिणामों को फ़िल्टर करने के लिए केवल उन प्रमुख नामों को कैसे दिखा सकता हूं जो पैटर्न से मेल खाते हैं? उदाहरण के लिए:फ़िल्टर एस 3 सूची-ऑब्जेक्ट्स परिणाम एक पैटर्न

aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]" 

उत्तर

21

--query तर्क JMESPath भाव का उपयोग करता है। JMESPath has an internal function contains जो आपको एक स्ट्रिंग पैटर्न खोजने की अनुमति देता है।

यह वांछित परिणाम देना चाहिए: आप कुंजी शुरुआती के लिए खोज करना चाहते हैं

aws s3api list-objects --bucket myBucketName --query "Contents[?contains(Key, `mySearchPattern`)]" 

(लिनक्स के साथ मैं एकल उद्धरण ' का उपयोग करने के बजाय वापस टिक्स ` आसपास mySearchPattern की जरूरत है।) कुछ वर्णों के साथ, आप --prefix तर्क का भी उपयोग कर सकते हैं:

aws s3api list-objects --bucket myBucketName --prefix "myPrefixToSearchFor" 
+0

सिंगल कोट्स का उपयोग कर लिनक्स पर काम नहीं किया। लेकिन बैकटीक्स से बचने काम किया। (उदा। \\ 'mySearchPattern \\') – swdev

+0

इसके अलावा, यदि मेरा खोज पैटर्न एक शुद्ध संख्या है (उदाहरण के लिए '20150101') तो सीएलआई शिकायत करता है कि यह एक स्ट्रिंग होना चाहिए और पूर्णांक नहीं होना चाहिए। यहां तक ​​कि आप के माध्यम से उद्धरण दिया था। खोज समाधान में एक गैर-अंक शामिल करने के अलावा समाधान नहीं मिला (उदाहरण के लिए '20150101 /') तो यह शिकायत नहीं करता है। – swdev

+0

एकल उद्धरण टिप्पणी के लिए धन्यवाद! मैं सोच रहा था कि wtf चल रहा था ,,,, – notzippy