खोजो। -Type f -name "* .htm *" -o -name "* .js *" -o -name "* .txt"
इसके लिए छोटा है:
खोजो। \ \ (( -type f -a -name "* .htm *" \) -o \ _
\ \ -name "* .js *" \) -o \
\ _-name "* .txt" \) \
\) -एक छाप
ऐसा इसलिए है, क्योंकि कोई भी एक्शन डेडिकेटेड (केवल शर्तों ) को निर्दिष्ट नहीं किया गया है , एक -print
एक्शन स्पष्ट रूप से उन फाइलों के लिए जोड़ा जाता है जो स्थितियों से मेल खाती हैं।
(और, वैसे, जो गैर-नियमित .js
फ़ाइलों को प्रिंट करेगा ( -type f
केवल .htm
फाइलों पर लागू होता है ))।
जबकि:
खोजो। -type f -name "* .htm *" -o -name "* .js *" -o -name "* .txt" \।
-exec sh -c 'इको "$ 0"' {} \;
इसके लिए छोटा है:
खोजो। \ \ -type f -a -name "* .htm *" \) -o \
\ \ -name "* .js *" \) -o \
\ "-name" * .txt " -a -ecec sh -c 'echo" $ 0 "' {} \ ?!) ;
For find
(कई भाषाओं की तरह), AND ( -a
; निहितार्थ जब छोड़ा गया हो) OR ( -o
) पर पूर्ववर्ती है , और एक स्पष्ट कार्रवाई जोड़कर (यहां -exec
) -print
ऊपर दी गई अंतर्निहित कार्रवाई को रद्द कर देता है। यहाँ, आप चाहते हैं:
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) \
-exec sh -c 'echo "$0"' {} \;
या:
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) -exec sh -c '
for i do
echo "$i"
done' sh {} +
sh
प्रति फ़ाइल एक चलाने से बचने के लिए ।
*.js*
या*.txt
।