- नंगे समाधान -
यदि आप 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 सभी विधेय का मूल्यांकन करने के लिए मजबूर कर सकते हैं ।