मैं, आदेश पंक्ति परबाश को वैरिएबल में वाइल्डकार्ड का विस्तार कैसे करें?
mv ./images/*.{pdf,eps,jpg,svg} ./images/junk/
टाइपिंग एक bash स्क्रिप्ट अंदर से रूप में एक ही प्रभाव को प्राप्त कोशिश कर रहा हूँ। मेरे पास है:
MYDIR="./images"
OTHERDIR="./images/junk"
SUFFIXES='{pdf,eps,jpg,svg}'
mv "$MYDIR/"*.$SUFFIXES "$OTHERDIR/"
, जो जब चलाने के लिए, नहीं अनपेक्षित त्रुटि देता है:
mv: rename ./images/*.{pdf,eps,jpg,svg} to ./images/junk/*.{pdf,eps,jpg,svg}:
No such file or directory
यह सब उद्धृत करने के लिए सही तरीका क्या है ताकि mv
वांछित विस्तार करना वास्तव में होगा? (हाँ, वहाँ फ़ाइलों को ./images/
में प्रतिमान से मेल खाने के बहुत सारे हैं।)
+1, साफ चाल, '@()' के बारे में नहीं पता था, मैंने कुछ नया सीखा है। बस इसे मैनपेज में देखा, किसी के लिए सोच रहा है कि '?() 'पैटर्न,' *() 'पैटर्न,' +() 'पैटर्न,' @() 'पैटर्न, और'!() 'पैटर्न हैं। सभी उपलब्ध हैं अगर 'extglob' सक्षम है। – falstro
शानदार, धन्यवाद! खोल स्क्रिप्ट में उद्धरण और विस्तार हमेशा मुझे समस्याएं पैदा करता है, इससे बहुत मदद मिलेगी। –
@RossDuncan, मैं सुझाव देता हूं कि http://mywiki.wooledge.org/BashParser शैल के निष्पादन मॉडल में शामिल चरणों पर एक अच्छा संदर्भ शुरू करने के लिए एक जगह के रूप में और वे किस क्रम में होते हैं। –