फ़ाइलों के एक जोड़े के साथ काम करने का एक सामान्य तरीका है - और उसके लिए मुझे मत मारो:
for f in $(ls); do …
अब, रिक्त स्थान या अन्य अजीब पात्रों के साथ फ़ाइलों के खिलाफ सुरक्षित होने के लिए, एक भोला तरीका करना होगा:
find . -type f -print0 | while IFS= read -r -d '' file; …
यहां, -d ''ASCII NUL को इस रूप में सेट करने के लिए छोटा है -d $'\0'।
लेकिन ऐसा क्यों है? क्यों ''और $'\0'एक ही हैं? क्या बैश की सी जड़ों के कारण एक खाली तार हमेशा शून्य-समाप्त होता है?
for f in *पार्स करने के बजाय उपयोग करें ls।
for i in $(ls)है कि मैं बहुत बेवकूफ हूं- मैं लगभग शर्मिंदा हूं मैंने इसका इस्तेमाल यहां एक बुरे उदाहरण के रूप में किया है।
find … -execफ़ाइलों के चारों ओर लूपिंग के बजाय का उपयोग करके , जो अधिकांश मामलों के लिए काम करता है जहां आप लूप के बजाय ऐसे उपयोग करेंगे। यहाँ, findआप के लिए सब कुछ का ख्याल रखता है।