मेरे पास कुछ फ़ोल्डर हैं जिनमें \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