इसके साथ इसका प्रयोग करें bash:
find $1 -name "* *.xml" -type f -print0 | \
while read -d $'\0' f; do mv -v "$f" "${f// /_}"; done
findनाम में एक जगह के साथ फ़ाइलों के लिए खोज करेंगे। फाइलनामों को एक नलबीट ( -print0) के रूप में मुद्रित किया जाएगा जो विशेष फिल्टनाम के साथ सामना करने के लिए सीमांकक के रूप में होगा। तब readबिलिन नलिन द्वारा सीमांकित फाइलनाम पढ़ता है और अंत में mvएक अंडरस्कोर के साथ रिक्त स्थान को बदल देता है।
संपादित करें: यदि आप निर्देशिकाओं में रिक्त स्थान भी निकालना चाहते हैं, तो यह थोड़ा अधिक जटिल है। निर्देशिकाओं का नाम बदल दिया जाता है और फिर नाम से सुलभ नहीं होता findहै। इसे इस्तेमाल करे:
find -name "* *" -print0 | sort -rz | \
while read -d $'\0' f; do mv -v "$f" "$(dirname "$f")/$(basename "${f// /_}")"; done
sort -rzफ़ाइल क्रम उलट जाता है, तो यह है कि एक फ़ोल्डर में गहरी फ़ाइलें पहले स्थानांतरित करने के लिए और फ़ोल्डर को स्वयं पिछले एक हो जाएगा रहे हैं। इसलिए, सभी फ़ाइलों और फ़ोल्डर का नाम बदलकर उसके अंदर नाम बदलने से पहले कभी भी फ़ोल्डर का नाम नहीं लिया जाता है। mvपाश में आदेश एक सा भी बदल रहा है। लक्ष्य नाम में, हम केवल फ़ाइल के बेसनेम में रिक्त स्थान हटाते हैं, अन्यथा यह सुलभ नहीं होगा।