find . -print0
का उपयोग में -print0 रिक्त स्थान, नई-पंक्तियों, उद्धरण चिह्न आदिखोजने के आउटपुट कैप्चरिंग। एक पार्टी सरणी
हालांकि युक्त फ़ाइल नामों की संभावना की वजह से पार्टी में फ़ाइलों की एक सूची प्राप्त करने का सुरक्षित तरीका प्रतीत हो रहा है, मैं आ रही हैं मुश्किल समय वास्तव में खोज के आउटपुट को बैश के भीतर या अन्य कमांड लाइन उपयोगिताओं के साथ उपयोगी बनाते हैं। ,
find . -print0 | perl -e '$/="\0"; @files=<>; print $#files;'
यह उदाहरण मिली फ़ाइलों की संख्या प्रिंट फ़ाइल नामों में नई-पंक्तियों के खतरे से बचने के भ्रष्ट: एक ही रास्ता मैं उत्पादन का उपयोग करने के कामयाब रहे अशक्त करने के लिए इसे पर्ल के लिए पाइप, और बदलते पर्ल के भारतीय विदेश सेवा के द्वारा होता है गिनती, के रूप में घटित होता साथ:
find . | wc -l
सबसे कमांड लाइन कार्यक्रमों अशक्त-सीमांकित इनपुट का समर्थन नहीं है, मैं समझ सबसे अच्छी बात है, एक पार्टी सरणी में find . -print0
के उत्पादन पर कब्जा करने की तरह मैंने किया है किया जाएगा उपरोक्त पर्ल स्निपेट में, और फिर कार्य के साथ जारी रखें, जो कुछ भी हो सकता है।
मैं यह कैसे कर सकता हूं?
यह काम नहीं करता:
find . -print0 | (IFS=$'\0' ; array=($(cat)) ; echo ${#array[@]})
एक बहुत अधिक सामान्य प्रश्न हो सकता है: मैं कैसे बैश में फ़ाइलों की सूची के साथ उपयोगी चीजें कर सकते हैं?
आप उपयोगी चीजों को करने से क्या मतलब है? –
ओह, आप जानते हैं, सामान्य चीजें सरणी उपयोगी होती हैं: उनके आकार का पता लगाना; उनकी सामग्री पर पुनरावृत्ति; उन्हें पीछे की ओर प्रिंटिंग; उन्हें छंटाई। उस तरह की चीस। इन चीजों को डेटा के साथ करने के लिए यूनिक्स में उपयोगिताएं हैं: wc, bash's for loops, tac और क्रमशः क्रमशः; लेकिन उन सभी सूचियों से निपटने के दौरान बेकार लगते हैं जिनमें रिक्त स्थान या न्यूलाइन हो सकती है। अर्थात। फ़ाइल नाम। शून्य मूल्यवान इनपुट-फील्ड-सेपरेटर्स के साथ डेटा पिपिंग समाधान लगता है, लेकिन बहुत कम उपयोगिताओं इसे संभाल सकता है। – Idris
यहां बहुत सारे विनिर्देशों के साथ खोल में फ़ाइल नामों को सही तरीके से कैसे प्रबंधित किया जाए, इस पर एक निबंध है: [http://www.dwheeler.com/essays/filenames-in-shell.html ](http://www.dwheeler.com/ निबंध/फ़ाइल नाम-इन-shell.html) –