2013-05-29 6 views
5

से सफेद रिक्त स्थान अग्रणी दूर करने के लिए तो मैं की तरह फ़ाइलों का एक समूह है:बैश स्क्रिप्ट फ़ाइलें नाम

Aaron Lewis - Country Boy.cdg 
Aaron Lewis - Country Boy.mp3 
Adele - Rolling In The Deep.cdg 
Adele - Rolling In The Deep.mp3 
Adele - Set Fire To The Rain.cdg 
Adele - Set Fire To The Rain.mp3 
Band Perry - Better Dig Two.cdg 
Band Perry - Better Dig Two.mp3 
Band Perry - Pioneer.cdg 
Band Perry - Pioneer.mp3 

और मैं प्रमुख बैश या मछली लिपि में हटाया खाली स्थान के की आवश्यकता है।

+0

क्या आपका मतलब है कि आप फाइलों का नाम बदल रहे हैं ताकि सामने सफेद जगह न हो, या क्या ये फाइल नाम टेक्स्ट फ़ाइल में संग्रहीत हैं और आपको उन्हें संसाधित करने की आवश्यकता है? – lurker

+0

मैं फ़ाइलों का नाम बदलना चाहता हूं ताकि सामने सफेद जगह न हो। – Acklavidian

उत्तर

5

फ़ाइल नाम आपके द्वारा दी गई में अग्रणी सफेद स्थान चार निकालने के लिए::

IFS=$'\n' 
for f in $(find . -type f -name ' *') 
do 
    mv $f ${f/\.\/ /\.\/} 
done 

इस: बस bash स्ट्रिंग फ़ंक्शन का उपयोग

  • केवल करने के लिए भारतीय विदेश सेवा में परिवर्तन न्यूलाइन अक्षर बनें; इस तरह यह फ़ाइल नामों में सफेद जगहों पर चकित नहीं होता है।
  • वर्तमान निर्देशिका में एक व्हाइटस्पेस से शुरू होने वाली सभी फाइलें पाता है।
  • bash सबस्ट्रिंग प्रतिस्थापन का उपयोग करते हुए प्रत्येक फ़ाइल को अग्रणी व्हाइटस्पेस के बिना फ़ाइल नाम पर ले जाता है।
+0

उसने ऐसा किया! मैं हमेशा आईएफएस के बारे में भूल जाता हूँ। यही वह था जो मेरी अपनी लिपि को मार रहा था। धन्यवाद – Acklavidian

0
for x in \ * ; do 
    mv "$x" `echo "$x" | sed "s/^ +//"` 
done 

यह तेज़ और गंदा है।

+0

कोई नहीं। मुझे यह 'उपयोग मिलता है: एमवी [-एफ | -ई | -एन] [-v] स्रोत लक्ष्य एमवी [-एफ | -ई | -एन] [-v] स्रोत ... निर्देशिका' – Acklavidian

+0

दिलचस्प। मैंने इसे एक बैश खोल में भाग लिया और यह मेरे लिए काम किया। मैंने अभी यह सुनिश्चित करने के लिए फिर से किया है: मैंने उन पंक्तियों को प्रतिलिपि बनाकर अपने शेल टर्मिनल पर चिपकाया और यह मेरी फाइलों का नाम बदल दिया जो अंतरिक्ष से शुरू होने वाली फ़ाइलों के साथ शुरू हुईं। मैं फेडोरा 17 लिनक्स चला रहा हूँ। यूनिक्स का क्या स्वाद चल रहा है? – lurker

0

cat <file> | sed -e 's/^[ ]*//'

चाल करना चाहिए। Stdout कैप्चर करें और एक फ़ाइल को लिखें।

+0

मैं फ़ाइल नामों में अग्रणी रिक्त स्थान को हटाने की तलाश में हूं। फ़ाइल सामग्री नहीं है। हालांकि अच्छा प्रयास करें। – Acklavidian

0

इसके लिए आपको sed की आवश्यकता नहीं है। आप उपयोग कर सकते

for file in /path/to/files/*; 
    do mv "$file" "${file# *}"; 
done 
संबंधित मुद्दे