2011-05-04 29 views
5

में ग्लोब नामकरण मैं इतनी माफी चाहता हूं कि यह एक बुनियादी सवाल है। मैं 1- को उनके फ़ाइल नामों में प्रीपेड करने के लिए एमपी 3 फ़ाइलों का एक समूह का नाम बदलने की कोशिश कर रहा था, और mv *.mp3 1-*.mp3 दुर्भाग्य से काम नहीं करता था। इसलिए मैं यह स्क्रिप्ट की कोशिश की, गूंज के साथ पहले आदेशों का परीक्षण करने के:बैश

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done 

कौन सा उत्पादन करने लगता आदेशों जो मुझे पसंद है, इसलिए मैं गूंज हटा दिया,

for f in *.mp3 ; do mv \'$f\' \'1-$f\'; done 

के आदेश को बदलने कौन सा अनुत्तीर्ण होना। अगला मैं आगे तो

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done | /bin/sh 

कौन सा काम किया जैसे आदेशों पाइप कोशिश की, लेकिन अगर कोई मेरे लिए के रूप में प्रबुद्ध सकता है क्यों मध्य कमान काम नहीं करता मैं जानना दिलचस्पी होगी। या यदि एक और अधिक सुरुचिपूर्ण एक-लाइनर है जो मैं चाहता था, तो मुझे भी यह देखने में दिलचस्पी होगी।

उत्तर

7

मुझे लगता है कि आप

for f in *.mp3 ; do mv "$f" "1-$f"; done 

के आदेश को बदलने के लिए नहीं तो आप mv को 'file1.mp3' और '1-file1.mp3' की तरह कुछ से होकर गुजरेगा (एकल उद्धरण सहित) है।

+0

मैं एकल उद्धरण शामिल करना चाहता था, क्योंकि अन्यथा मुझे बैकस्लाश के साथ सभी रिक्त स्थान से बचने की आवश्यकता होगी। एमवी उद्धरणों पर ध्यान नहीं देता है। हालांकि, फ़ाइल नामों में '(और "उस मामले के लिए) भी हो सकता है। – wim

+0

जब आप' $ f' के आसपास डबल कोट्स का उपयोग करते हैं तो आपको रिक्त स्थान से बचने की आवश्यकता नहीं है। फ़ाइल नाम में सिंगल या कोई समस्या नहीं है, डबल कोट्स – bmk

7

सूखी रन:

rename -n 's/^/1-/' *.mp3 

-n निकालें अगर यह आदेश को चलाने के लिए सही लग रहा है। विवरण के लिए man rename

+1

यह डेबियन पर काम करता है लेकिन सेंटोस पर नहीं, जहां नाम कमांड इस वाक्यविन्यास का पालन नहीं करता है और बहुत कम शक्तिशाली है। –