जवाबों:
-oविभिन्न मापदंडों के बीच ध्वज का उपयोग करें ।
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) एक जादू की तरह काम करता है।
नोट वहाँ चाहिए ब्रैकेट और उसकी सामग्री के बीच एक रिक्ति है या यह काम नहीं करेगा।
स्पष्टीकरण:
type -f - केवल फाइलों के लिए खोजें (निर्देशिका नहीं)\(- type -fसभी तर्कों पर लागू करने के लिए आवश्यक-o - तार्किक या ऑपरेटर-iname- जैसे -name, लेकिन मैच असंवेदनशील हैtype -fविस्तार नहीं है और कोष्ठकों के बिना दोनों भाव पर लागू होते हैं, तो, find ./ -type f -iname \*.jpg -o -type f -iname \*.pngभी काम करता है ... हालांकि यह दो पात्रों है लंबे समय तक :-)
a * b + cअलग हैa * (b + c)
आप के साथ मापदंड को जोड़ सकते हैं -oके रूप में Shadur ने सुझाव दिया । ध्यान दें कि -ojuxtaposition की तुलना में कम पूर्वता है, इसलिए आपको कोष्ठक की आवश्यकता हो सकती है।
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
लिनक्स पर, आप -regexएक्सटेंशन का उपयोग एक निडर तरीके से कर सकते हैं । डिफ़ॉल्ट regexp सिंटैक्स Emacs ( मूल regexps प्लस कुछ एक्सटेंशन जैसे कि \|प्रत्यावर्तन के लिए) है; विस्तारित रेगेक्स पर स्विच करने का विकल्प है ।
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
FreeBSD, NetBSD और OSX पर, आप विस्तारित रेगेक्स -regexके साथ संयुक्त का उपयोग कर सकते हैं -E।
find -E . -regex '.*\.(jpg|png)'
-inameके बजाय -nameतो आप भी कब्जा होगा - image.JPGऔरimage.PnG
यह अधिक सही है:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregexमैच और jpgसाथ ही JPG Jpg jpGऐसा है। मुझे लगता $है कि जरूरत नहीं है।
find -E . -iregex '.*\.(jpg|png|gif)'जैसा कि @ सोरिन के उत्तर में दिखाया गया है।
यह स्पष्ट करने के लिए, लिनक्स, यूनिक्स और मैकओएस स्वाद पर काम करने वाला एकमात्र विकल्प है:
find -E . -regex '.*\.(jpg|png)'
ऐसा इसलिए है क्योंकि ओएस एक्स संस्करण थोड़ा अलग है, लेकिन यह उन चीजों को लिखने के लिए महत्वपूर्ण है जो अधिकांश प्लेटफार्मों पर अच्छी तरह से चलते हैं।
-type f \( -iname \*.png -o -iname \*.jpg\)OSX पर कौन सा भाग काम नहीं करता है?
find -nameकई पैटर्न से मेल खाने वाला पैटर्न