मैं अपने संगीत में सफाई के लिए एक बैश स्क्रिप्ट लिख रहा हूं।लिनक्स नाम बदलें अपरकेस पहला अक्षर
sed -i -e 's/[-_]/ /g' -e 's/ \+/ /g' -e **'s/\<[a-z]/\U&/g'** -e "s/$artist //g" -e "s/$album //g"
कौन सा मैं एक पाठ फ़ाइल के लिए फ़ाइल नाम जोड़ने के लिए इस्तेमाल किया और फिर sed:
मैं यह सब फ़ाइल नाम से प्रारूप और उन्हें बनाने और इतने एक छोटे से इंटरनेट खोज के साथ मैं इस लाइन में लिखा था चाहता था यह, लेकिन तब मुझे नहीं पता था कि फाइलों में नए नाम कैसे लागू करें।
तो फिर मैंने नाम बदलने के साथ प्रयोग करना शुरू कर दिया और बोल्ड किए गए हिस्सों को छोड़कर सटीक उसी परिणाम प्राप्त करने में कामयाब रहा, जिसे शब्द अपरकेस में हर पहला अक्षर बनाना है।
rename 's/[-_]/ /g' * && rename 's/\s+/ /g' * && **rename 's/\s\w{1}/*A-Z*/g' *** && rename 's/^\d+[[:punct:]]\s//g' * && rename "s/$artist\s//g" * && rename "s/$album\s//g" * && rename "s/($ext)//g" *
अब, नाम बदलने में कोड (संतोषजनक ढंग से कम से कम) काम कर रहा है, एक अंतरिक्ष चरित्र के बाद केवल एक पत्र की खोज, लेकिन यह प्रतिस्थापन कि समस्याग्रस्त है। मैंने कई अलग-अलग दृष्टिकोणों की कोशिश की है, सभी मुझे परिणाम के साथ छोड़कर इस मामले में फोकस में पहला अक्षर बिल्कुल ए-जेड में आदान-प्रदान किया जाता है।
नाम मैनुअल पेज में यह कम केस अपरकेस बनाने के लिए कहता है जो आप करते हैं/ए-जेड/ए-जेड/जी 'लेकिन यह समझना आसान है कि यह केवल ए-जेड ए-जेड पाता है। तो यही मुझे मदद चाहिए।
कोई बोनस होगा अगर कोई जानता है कि इसे उदाहरण के उदाहरण में कैसे करना है, जहां \ < प्रत्येक शब्द की शुरुआत से मेल खाता है, क्योंकि फिलहाल, मेरा नाम कमांड पहले शब्द पर लागू नहीं होगा और स्पष्ट कारणों से "डिस्क नाम [डिस्क 1]" जैसी कई डिस्क दिखाई देने पर न तो यह लागू होगा।
मुझे लगता है कि आप अपनी पोस्ट पर "साइन ऑफ" रखना चाहते हैं। [ऐसा मत करो।] (Http://stackoverflow.com/faq#signatures) – chrisaycock
यदि आपके पास पहले से ही स्रोत नाम और गंतव्य नाम जोड़े के साथ एक टेक्स्ट फ़ाइल है, तो 'sed' s/^/mv/'textfile | sh' आपको बस चाहिए (हालांकि रिक्त स्थान आदि के साथ फाइल नामों को उद्धृत करना चीजों को जटिल बनाता है; यह केवल अवधारणा का सबूत है, वास्तविक जवाब नहीं)। – tripleee