मिली फ़ाइलों की कुल संख्या की गणना कैसे करें?


10

मैं find . -name patternकुछ फ़ाइलों को खोजने के लिए दौड़ रहा हूं , और मैं इन फ़ाइलों में कुल मिलाकर कुल पंक्तियों को प्राप्त करना चाहता हूं।

मैं उसे कैसे प्राप्त कर सकता हूं?

जवाबों:


9

के अपने संस्करण हैं wcऔर findसमर्थन आवश्यक विकल्प:

find . -name pattern -print0 | wc -l --files0-from=-

जो आपको प्रति-फ़ाइल की गिनती के साथ-साथ कुल भी देगा। यदि आप केवल कुल चाहते हैं:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

findइसके समर्थन के संस्करणों के लिए एक और विकल्प :

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

प्रत्येक फ़ाइल लेता है और catइसे फिर से wcसेट गिनती लाइन के माध्यम से सभी को पाइप करता है ।

या, [अप्रयुक्त] अजीब फ़ाइलनाम सुरक्षित:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

1

दुर्भाग्य से इसका उत्पादन:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

अतिरिक्त लाइनें सम्मिलित करता है। एक विश्वसनीय लाइन गिनती प्राप्त करने के लिए आपको क्या करना चाहिए:

find . -name "yourpattern" -print0 | xargs -0 wc -l

इस तरह से आप रिक्त स्थान को सही ढंग से संभालते हैं, प्रत्येक फ़ाइल के लिए एक लाइन काउंट प्राप्त करते हैं, और कुल लाइन काउंट, तेज और शैली में !!!


1
जैसे: समय मिल गया। -name " .m" -exec cat '{}' '; | wc -l 4.878 के दशक में चलता है और 227847 को लाइन काउंट के रूप में लौटाता है। लेकिन समय मिल गया। -name " .m" -print0 | xargs -0 wc -l 0.769 s में चलता है और उचित लाइन काउंट 126464 देता है।
g24l

1

एक और आसान तरीका है कोई नहीं। एक फ़ाइल में लाइनें:

wc -l filename

उदाहरण:

wc -l myfile.txt 

-1

अनटाइटेड, लेकिन कैसे कुछ के बारे में:

cat `find . -name "searchterm" -print` | wc -l

यह रिक्त स्थान या वर्णों के साथ अच्छी तरह से काम नहीं करेगा जो ग्लोबिंग को ट्रिगर करते हैं।
कामिल मैकियोरोव्स्की 20

-2
wc -l `find -name filename`

कुशलता से काम करेंगे।


… या नहीं, यदि पथ में रिक्त स्थान या वर्ण होते हैं जो ग्लोबिंग को ट्रिगर करते हैं।
कामिल मैकियोरोस्की 20

और यहां तक ​​कि अगर यह काम करता है, तो यह प्रत्येक फ़ाइल में लाइनों की संख्या की रिपोर्ट करता है, जो कुल प्राप्त करने के लिए एक सुरुचिपूर्ण तरीका नहीं है (जैसा कि अनुरोध किया गया है)।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.