मेरे पास फाइलों की एक सूची है जिसे मैं प्रतिलिपि बनाने और स्थानांतरित करने की कोशिश कर रहा हूं (सीपी और एमवी का उपयोग करके) एक बैश खोल स्क्रिप्ट में। जिस समस्या में मैं चल रहा हूं, वह यह है कि मुझे बड़ी संख्या में फाइलों को पहचानने के लिए कमांड नहीं मिल सकता है, ऐसा लगता है कि फ़ाइल नामों में रिक्त स्थान और/या यूनिकोड वर्ण होते हैं। मुझे इन पात्रों को डीकोड/पुनः-एन्कोड करने के लिए कोई स्विच नहीं मिला। इसके बजाए, उदाहरण के लिए, यदि मैं "file name.xml" की प्रतिलिपि बनाता हूं, तो मुझे "* .xml" और एक स्क्रिप्ट त्रुटि मिलती है जो फ़ाइल मेरे परिणाम के लिए नहीं मिली थी। क्या कोई भी सेटिंग या कमांड जानता है जो इन फ़ाइलों से निपटेंगे?शैल स्क्रिप्ट का उपयोग करते समय, मैं रिक्त स्थान और यूनिकोड वाले नामों वाली फ़ाइलों की प्रतिलिपि कैसे बना सकता हूं?
संपादित करें (वर्तमान कोड जोड़ने): जब मैं चलाएँ:
इस macbookpro: डेस्कटॉप $ ./script.sh
#!/bin/sh
dateVar=`date +%Y-%m-%d`
mkdir /Volumes/Documents/SMSarchive/$dateVar
cd /Volumes/Documents/SMSarchive/SMSdrop
for i in *.xml
do
cp $i /Volumes/Documents/SMSarchive/$dateVar/$dateVar-$i
done
मैं संदेश मिलता है:
उपयोग: सीपी [- आर [-एच | -एल | -पी]] [-फि | -एन] [-पीवीएक्स] स्रोत_फाइल target_file सीपी [-आर [-एच | -एल | -पी]] [-फि | -एन] [-पीवीएक्स] स्रोत_फाइल ... target_directory
... जब यह "सीपी" कमांड को हिट करता है। वास्तव में स्क्रिप्ट के लिए और अधिक है, जो प्रतिलिपि बनाई गई फ़ाइलों को आगे संसाधित करता है। "नियमित" फ़ाइल नाम के साथ उदा। 'file.xml', सब कुछ ठीक काम करता है। यह केवल रिक्त स्थान, या यूनिकोड वर्णों वाली फाइलें हैं, जहां मुझे समस्याएं हैं।
धन्यवाद! कोड को बदलना: सीपी "$ i"/वॉल्यूम/दस्तावेज़/एसएमएसआर्किव/$ डेटवारा/"$ dateVar" - "$ i" ... पूरी तरह से काम किया! – LOlliffe
या यहां तक कि: 'सीपी" $ i ""/वॉल्यूम्स/दस्तावेज/एसएमएसआर्किव/$ डेटवायर/$ डेटवारा- $ i "'। एक शेल स्क्रिप्ट में, * हमेशा * उद्धरण चर तब तक जब तक आपके पास कोई विशिष्ट कारण न हो। –