- नंगे समाधान -
यदि आप find
मिली निर्देशिका की सामग्री को छोड़ना चाहते हैं, लेकिन अन्य निर्देशिकाओं में खोज जारी रखें, -prune
जैसा कि @laebshade ने सुझाव दिया है। पूरी कमांड तब दिखनी चाहिए
find . -type d -name somename -prune -exec ...
दूसरी ओर, यदि आप find
पूरी तरह से खोज को रोकना चाहते हैं और पहली मिलान निर्देशिका को खोजने के बाद, तो आप जो खोज रहे हैं वह -quit
उपलब्ध है (संस्करण 4.2.3
के बाद से उपलब्ध है GNU find
)। यह उपयोग करने के लिए थोड़ा अधिक मुश्किल है, क्योंकि यह find
तुरंत बाहर निकलता है - इसलिए -quit
इसे कमांड के बहुत अंत में रखा जाना चाहिए:
find . -type d -name somename -exec ... -quit
उम्मीद के मुताबिक काम करने के लिए, किसी को यह आश्वासन देना होगा कि -exec
रिटर्न सही है (दूसरे शब्दों में, एक शून्य स्थिति)। यदि आप चाहते हैं कि बाहर निकलने की स्थिति -exec
को नजरअंदाज कर दिया जाए, ताकि -quit
हमेशा काम करें, तो आपको थोड़ी चाल की जरूरत है:
find . -type d -name somename \( -exec ... -o -true \) -quit
या
find . -type d -name somename \( -exec ... -o -quit \)
या
find . -type d -name somename \( -exec ... , -quit \) # a comma before -quit
- कुछ स्पष्टीकरण -
कैसे find
काम करता है के बारे में सबसे महत्वपूर्ण बात यह है कि सभी क्रियाओं ("परीक्षण") को तार्किक भविष्यवाणी के रूप में माना जाता है जो बाएं से दाएं व्याख्या की जाती हैं। इसलिए, अंतिम क्रिया (उदाहरण के लिए -quit
) केवल तब ही की जाएगी जब पूरा पिछला हिस्सा झूठा नहीं लौटा । डिफ़ॉल्ट रूप से, सभी परीक्षण तार्किक "और" के साथ जुड़ जाते हैं, -o
विकल्प संयुक्त को "OR" में बदल देता है।
इसका एक मुश्किल तत्व -o
यह है कि find
आपकी कमांड को "ऑप्टिमाइज़" किया जा सकता है और -exec
यदि आप सिर्फ टाइप करते हैं तो भाग नहीं चला सकते हैं
find . -type d -name somename -exec ... -o -quit
इसका सामना करने के लिए, आप find
कोष्ठकों के भीतर संलग्न करके "या" के साथ joned सभी विधेय का मूल्यांकन करने के लिए मजबूर कर सकते हैं ।