फ़ाइलों को अलग करें और उन पर wc चलाएं
ऐसा क्या wc -l /etc/*
है कि निर्देशिका के *
अंदर सभी वस्तुओं का विस्तार होगा /etc/
। इस प्रकार लक्ष्य तब फ़ाइलों को अलग करना और wc
उन पर प्रदर्शन करना है। ऐसा करने के कई तरीके हैं।
परीक्षण के साथ पाश के लिए
test
आदेश, या अधिक बार संक्षिप्त रूप में [
इस्तेमाल किया जा सकता है कि क्या एक आइटम इतना की तरह एक नियमित रूप से फ़ाइल है खोजने के लिए:
[ -f "$FILE" ]
इस प्रकार हम जो कुछ भी कर सकते हैं वह सभी वस्तुओं पर पुनरावृत्त है /etc/
और wc
उन पर चल रहा है यदि और केवल यदि उपरोक्त आदेश सत्य है। इस तरह:
for i in /etc/*; do [ -f "$i" ] && wc -l "$i" ; done
खोज
हम यह भी उपयोग कर सकते हैं find
के साथ -maxdepth
, -type
और -exec
झंडे
find /etc/ -maxdepth 1 \( -type f -o -type l \) -exec wc -l {} +
-maxdepth
सूचित करता है कि जाने के लिए निर्देशिका संरचना में कितना गहरा है; 1 का मान का अर्थ है केवल उस निर्देशिका में फ़ाइलें जो हम चाहते हैं।
-type f
इसे नियमित फ़ाइलों को देखने के लिए कहता है, या ( -o
ध्वज द्वारा दर्शाया गया है ) सांकेतिक लिंक (द्वारा प्रतिनिधित्व type l
) के लिए। उस अच्छाई के सभी कोष्ठक में संलग्न किया ()
गया है, \
ताकि शेल उन्हें find
आदेश के हिस्से के रूप में व्याख्या करे , बजाय कुछ और के।
-exec COMMAND {} +
यहां संरचना जो भी आदेश देती है, हम उसे +
सभी मिली हुई फाइलों को लेने के लिए संकेत देते हैं और उन्हें कमांड लाइन के रूप में सामान करते हैं।
कुल उत्पादन करने के लिए हम पाइप आउटपुट को tail
पसंद कर सकते हैं
$ find /etc/ -maxdepth 1 \( -type f -o -type l \) -exec wc -l {} + | tail -n 1
[sudo] password for xieerqi:
11196 total
पक्षीय लेख
यह सिर्फ wc -l /etc/* 2>/dev/null | tail -1
एलडी जेम्स के जवाब के रूप में उपयोग करना आसान है , हालांकि find
मुश्किल फाइलनामों से बचने के लिए फाइलों से निपटने की आदत का हिस्सा होना चाहिए। उस बारे में अधिक जानकारी के लिए निबंध को सही ढंग से फ़ाइलनाम से कैसे निपटें