तार्किक या खोजने में उपयोग कैसे करें?


12

बैश शेल में lsतार्किक या कार्यक्षमता का उपयोग किया जा सकता है (बेशक मैं भी कर सकता था ls name1 name2लेकिन मेरे सच्चे उदाहरण अधिक जटिल हैं):

ls @(name1|name2)

क्या इसका उपयोग करने का कोई तरीका है find?

मेरा अनुभवहीन कार्यान्वयन:

find . -maxdepth 1 -name @("name1"|"name2") 

काम नहीं करता है (यह सिर्फ कुछ नहीं आउटपुट)


4
क्या आपने मैनपेज का OPERATORSअनुभाग पढ़ा है find?
स्टीलड्राइवर

जवाबों:


19

आप -oतार्किक के लिए उपयोग कर सकते हैं OR। हालांकि सावधान रहें कि सभी findविधेयकों में तार्किक मूल्य हैं, इसलिए आपको आमतौर पर ORपैरेंस के साथ एड चीजों को समूहबद्ध करना होगा । और चूंकि पारेंस का शेल से भी मतलब है, इसलिए आपको उनसे बचना भी होगा:

find /some/dir -maxdepth 1 \( -name '*.c' -o -name '*.h' \) -print

5

अपने प्रश्न का उत्तर देने के लिए, आप -oविकल्प का उपयोग कर सकते हैं :

   expr1 -o expr2
          Or; expr2 is not evaluated if expr1 is true.

   expr1 -or expr2
          Same as expr1 -o expr2, but not POSIX compliant.

इस तरह:

$ find . -maxdepth 1 -name "name1" -o -name "name2"
./name1
./name2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.