जवाबों:
कुछ ऐसा हो सकता है
find . -type f | wc -l
चालबाजी करेगा। मूल फ़ोल्डर से कमांड का प्रयास करें।
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- मैं अपने समाधान के लिए प्रिंट को अपने -ईएक्स ईको के बजाय अपनाता हूं।
वर्तमान निर्देशिका के मूल में फ़ाइलों (यहां तक कि एक एक्सटेंशन के बिना फाइलें) की गणना करने के लिए, उपयोग करें:
ls -l | grep ^- | wc -l
फ़ाइलों की गणना करने के लिए (यहां तक कि एक एक्सटेंशन के बिना भी फाइलें) वर्तमान निर्देशिका की जड़ से पुनरावर्ती रूप से, उपयोग करें:
ls -lR | grep ^- | wc -l
सबसे तेज़ और आसान तरीका, उपयोग करना है tree
। इसकी गति आपके आउटपुट टर्मिनल द्वारा सीमित है, इसलिए यदि आप परिणाम को पाइप करते हैं tail -1
, तो आपको तत्काल परिणाम मिलेगा। आप -L
विकल्प का उपयोग करके परिणामों को किस निर्देशिका स्तर पर नियंत्रित कर सकते हैं । रंगीन आउटपुट के लिए, का उपयोग करें -C
। उदाहरण के लिए:
$ tree share/some/directory/ | tail -1
558 directories, 853 files
$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
यदि यह पहले से ही नहीं है, तो आप इसे यहाँ प्राप्त कर सकते हैं ।
find -type f -printf . | wc -c
खोज की आउटपुट लाइनों की गिनती न करें, क्योंकि फ़ाइल नाम, जिसमें 99 नईलाइन हैं, 100 फाइलों के रूप में गिना जाएगा।
पथ में प्रत्येक फ़ोल्डर के लिए इस कमांड का उपयोग करें
for D in *; do echo $D; find $D -type f| wc -l; done
लगता है कि यह पेड़ की तुलना में तेज़ है, इसलिए मैंने नीचे वर्तमान वर्किंग डाइरेक्टरी की प्रत्येक डायरेक्टरी में फाइलों को गिनने के लिए इस्तेमाल किया (सीडब्ल्यूडी में फाइलों को अनदेखा करना), जिससे डाइरेक्ट्री को स्पेस मिल सके।
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
है बहुत बुरा विचार।
आप उपयोग कर सकते हैं find . | wc -l
find .
आपके वर्तमान फ़ोल्डर में शुरू होने वाली सभी फ़ाइलों और फ़ोल्डरों और संपूर्ण सामग्री को सूचीबद्ध करेगा।
wc -l
खोज के परिणामों को गिनता है