फ़ाइलों को अलग करें और उन पर 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मुश्किल फाइलनामों से बचने के लिए फाइलों से निपटने की आदत का हिस्सा होना चाहिए। उस बारे में अधिक जानकारी के लिए निबंध को सही ढंग से फ़ाइलनाम से कैसे निपटें