मैं एकाधिक फ़ाइलों में शब्द गणना कैसे सूचीबद्ध करूं?


9

कहें कि मुझे यह पता लगाने की आवश्यकता है कि प्रत्येक फ़ाइल में कितने शब्द हैं, जिसमें शब्द 'काम' है।

मुझे पता है कि इसमें 'काम' के साथ फाइल खोजने के लिए, यह होगा ls work। और यह पता लगाने के लिए कि शब्दों की संख्या कितनी होगीwc -w

हालाँकि मैंने यह कोशिश की और यह सिर्फ फाइलों की संख्या को प्रदर्शित करता हुआ प्रतीत होता है, न कि सभी फाइलों में संयुक्त शब्दों की संख्या (जो मुझे चाहिए):

ls work | wc -w

तो मान लीजिए कि 14 फाइलें हैं, जो 'काम' की शर्त का पालन करती हैं, तो यह 14 प्रदर्शित होगी, शब्दों की संख्या नहीं।

जवाबों:


17

वाक्य-विन्यास है wc -w [FILE]। यदि आप FILE का उपयोग नहीं करते हैं, लेकिन इसके आउटपुट में पाइप ls workकेवल यह गिनाएगा कि यह स्टड पर क्या पढ़ेगा।

आपको पाठ में ही पाइप करना होगा:

cat *work* | wc -w

वैकल्पिक आप के wcसाथ निष्पादित कर सकता है find -exec। लेकिन इस बात का ध्यान रखें कि यह कई "कुल" रकम दिखा सकता है, क्योंकि अगर बहुत सारी फाइलें हैं तो कई बार findकॉल करेगा wc

find ./ -type f -name "*work*" -exec wc -w {} +

मैंने findकमांड का उपयोग करके लाइनों की गिनती को योग करने में भी सक्षम किया wc -l। गजब का!
5

3

आप wcकई फ़ाइलों के साथ चला सकते हैं और फिर शेल-इन का उपयोग कर सकते हैं , *जिसमें वर्किंग डायरेक्टरी में प्रत्येक गैर छिपी हुई फ़ाइलों को wcपैरामीटर में जोड़ा जाता है ।

wc -w *work*

यदि किसी निर्देशिका का नाम सम्‍मिलित है, workतो यह आउटपुट को त्रुटि के साथ दिखाएगा..एक हैक STDERR को पुनर्निर्देशित करेगा .. 2>/dev/nullहालाँकि आपको findकेवल फ़ाइलों को प्राप्त करने के लिए कुछ का उपयोग करना चाहिए ..
heemayl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.