मैं बैश / श में इनपुट के रूप में दी गई स्ट्रिंग वाली फाइलों की संख्या (एक निर्देशिका में) कैसे गिन सकता हूं?
मैं बैश / श में इनपुट के रूप में दी गई स्ट्रिंग वाली फाइलों की संख्या (एक निर्देशिका में) कैसे गिन सकता हूं?
जवाबों:
grep -l "string" * | wc -l
कार्यशील निर्देशिका में सभी फ़ाइलों की सामग्री में "स्ट्रिंग" की खोज करेंगे और आपको बताएंगे कि कितने मिलान हुए।
grep -lr "string" directory | wc -l
यदि आप पुनरावर्ती खोज नहीं चाहते हैं, तो आप अधिकतम विकल्प के साथ खोज का उपयोग कर सकते हैं: find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
ध्यान दें कि यह दूसरा विकल्प grep की तुलना में धीमा है।
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
स्पष्टता: यह उन फाइलों की संख्या की तलाश करता है जिनकी सामग्री में "pattern_to_look_for" है और उनके फ़ाइल नाम में नहीं है (जैसे कि वैग का उत्तर)। आपके प्रश्न से यह बताना मुश्किल है कि आप क्या देख रहे हैं।
find . ! -name . -prune -type f
(बैकस्टिक्स को याद न करना)। यह कमांड केवल फ़ोल्डर में फाइलों को सूचीबद्ध करता है।
यह बैश में किसी भी नाम के साथ काम करता है :
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
स्पष्टीकरण:
grep
के -Z
विकल्प के लिए एक ␀-बाइट विभाजक के साथ हर परिणाम प्रिंट करता है। यह चरित्र किसी फ़ाइल नाम का हिस्सा नहीं हो सकता है, इसलिए हम केवल फ़ाइलों की संख्या प्राप्त करने के लिए विभाजकों की संख्या की गणना कर सकते हैं।tr
।wc
।