मेरे पास कुछ फ़ोल्डर हैं जिनमें \nयह उनके नाम हैं।
उदाहरण के लिए:
$ ls
''$'\n''Test'
Thats के नाम के साथ एक फ़ोल्डर का उल्लेख होता है टेस्ट नाम और उसके नाम से पहले एक खाली लाइन।
इसलिए जब मैं इस तरह की कुछ स्क्रिप्ट चलाता हूं, तो इसकी मूल निर्देशिका में:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
यह दिखाता है:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
क्योंकि यह दो बार चलता है, एक बार \nऔर दूसरे पर Test, क्योंकि फ़ोल्डर नाम में दो लाइनें हैं।
तो मैं इस मुद्दे को कैसे हल कर सकता हूं कि, स्क्रिप्ट जानता है \nTestकि सिर्फ एक फ़ोल्डर है?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; doneकमांड में यह आउटपुट है rmdir: failed to remove 'Test': No such file or directory।
rmdir "$file"
-print0निर्देश, और-dपढ़ने के विकल्प का उपयोग करने की आवश्यकता है । देखें stackoverflow.com/a/40189667/7552