जवाबों:
-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 ने सुझाव दिया । ध्यान दें कि -o
juxtaposition की तुलना में कम पूर्वता है, इसलिए आपको कोष्ठक की आवश्यकता हो सकती है।
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
कई पैटर्न से मेल खाने वाला पैटर्न