2008-10-13 9 views
6

मैं काम कर प्रति एक तोड़फोड़ में फ़ाइलों का एक सेट कैपिटलाइज़ेशन बदलने के लिए है, इसलिए की तरह की जरूरत है: मैं इस स्वचालित कर सकते हैं कैसेएक निर्देशिका में हर फ़ाइल कैपिटल में लिखें, बैश में, का उपयोग करते हुए 'SVN mv'

 
svn mv test.txt Test.txt 
svn mv test2.txt Test2.txt 
svn mv testn.txt Testn.txt 
... 
svn commit -m "caps" 

प्रक्रिया? मानक लिनक्स स्थापित उपकरण उपलब्ध हैं।

उत्तर

13

ls | awk '{system ("svn mv" $ 0 "" toupper (substr ($ 0,1,1)) सबस्ट्र ($ 0,2))}

जाहिर है, अन्य स्क्रिप्टिंग भाषाएं भी काम करती हैं। अजीब का लाभ यह है कि यह सर्वव्यापी है।

+0

बिल्कुल सही, सिर्फ एक लाइनर जिसे मैं ढूंढ रहा था! वास्तव में –

+0

महान। आइवेट –

0

मैं आम तौर पर 'ls' आउटपुट को एक फ़ाइल में रीडायरेक्ट करके इसे करता हूं, प्रत्येक फ़ाइल नाम को कमांड लाइन में मालिश करने के लिए विम मैक्रोज़ का उपयोग करके, फिर फ़ाइल को शेल स्क्रिप्ट के रूप में निष्पादित करता हूं। यह कच्चा लेकिन प्रभावी है।

2

आप एक सभ्य अजगर स्थापित आप होना चाहिए है, तो यह एक कोशिश दे:

#!/usr/bin/python 
from os import rename, listdir 
path = "/path/to/folder" 
try: 
    dirList = listdir(path) 
except: 
    print 'There was an error while trying to access the directory: '+path 
for name in dirList: 
    try: 
     rename(path+'\\'+name, path+'\\'+name.upper()) 
    except: 
     print 'Process failed for file: '+name 
+0

name.capitalize(), ऊपरी() –

+0

जो कि "फ़ाइल नाम" चाहता है, उस पर निर्भर करेगा, फिर हाँ आप सही हैं, हालांकि मुझे लगता है कि "FILENAME" चाहता था कि मैं सही हूं। – UnkwnTech

+0

यदि आप अपना प्रश्न पढ़ते हैं, तो यह स्पष्ट होगा कि वह "FILENAME" की बजाय "फ़ाइल नाम" चाहता था। –

1

मुझे नहीं लगता कि यह बैश/sed/tr/find के साथ ऐसा करने का एक आसान तरीका है।

मैं एक रूबी/पर्ल स्क्रिप्ट बनाउंगा जो नामकरण करता है।

#!/usr/bin/ruby 
# Upcase.rb 
ARGV.each{ |i| 
    newname = i.gsub(/(^.|\s.)/{ |x| x.upcase } 
    `svn mv "#{i}" "#{newname}" ` 
} 

तो बस

./Upcase.rb foo.txt test.txt test2.txt foo/bar/test.txt 

करते हैं या यदि आप एक पूरी dir क्या करना चाहते हैं

find ./ -exec ./Upcase.rb {} + 
1

कृपया ध्यान दें कि इस परिवर्तन टूटता मौजूदा विंडोज और मैक सिस्टम पर workingcopies, के रूप में वे कर सकते हैं मामला केवल नाम बदलने के लिए नहीं है।

+0

सबवर्सन पर <= 1.6 इसने काम करने वाली प्रतियां तोड़ दीं। > = 1.7 के साथ केस परिवर्तन में लाने वाले अपडेट में कुछ बाधाएं हो सकती हैं, लेकिन आप अपनी कार्य प्रतिलिपि के बिना इस स्थिति से पुनर्प्राप्त कर सकते हैं। –

संबंधित मुद्दे