यह अजगर में एक समाधान है जो मामले को संभालता है जहां फाइलें आवश्यक रूप से एक ही निर्देशिका में नहीं होती हैं।
import os
torename = []
rootdir = "The main directory"
logfile = "Path to log file" #Eg: logfile = "/home/prasanth/renamelog"
for (path, dirs, files) in os.walk(rootdir):
for dirname in dirs:
if ':' in dirname:
torename.append(os.path.join(path, dirname))
for filename in files:
if ':' in filename:
torename.append(os.path.join(path, filename))
print "No of files/dirs to rename =", len(torename)
a = raw_input("Continue? (y/n) ")
if a == 'y':
torename.reverse()
for oldname in torename:
directory, filename = os.path.split(oldname)
newname = os.path.join(directory, filename.replace(':', '-'))
command = 'mv %s %s > /dev/null' % (repr(oldname), repr(newname))
os.system(command)
f = open(logfile, 'a')
f.write(oldname + '\n')
f.close()
else:
print "Aborted."
- इसे एक फ़ाइल में सहेजें (कहिए) का नाम बदलें।
rootdir
विचाराधीन सबसे बाहरी निर्देशिका में बदलें (पूर्ण पथ नाम के साथ शुरू करें / कोई शॉर्टहैंड या एनवी चर जैसे ~ अनुमत)। विशेष वर्णों से पहले \ _ को डालने की कोई आवश्यकता नहीं है - उदाहरण के लिए यदि सबसे बाहरी डायर /.../My HDD है, तो rootdir = "/.../My HDD"
NOT rootdir = "/.../My\ HDD"
(नोट करें "s) [मैं यह केवल इसलिए स्पष्ट कर रहा हूं क्योंकि आप अजगर से अपरिचित हो सकते हैं। कोई असम्मान नहीं। इरादा है।]
logfile
लॉगफ़ाइल के इच्छित स्थान में बदलें । अंत में, इस फाइल में भविष्य में संदर्भ के लिए पुनर्नामित फ़ाइलों की सूची होगी।
- पुकारते हैं
python rename.py
।
चेतावनी: संगीत के पूरे GB को जोखिम में डालने से पहले एक छोटे नमूने पर परीक्षण करें।
विवरण: नाम बदलकर बाह्यतम फ़ाइलों से किया जाता है।
find .
एक उपनिर्देशिका के नाम के आउटपुट में इसकी सामग्री पहले से है। इसलिए यदि आपके पास/1:/2:
पहले फाइल है तो/1:/
उसका नाम बदल दिया जाएगा/1-/
। अब आप नाम नहीं बदल सकते/1:/2:
करने के लिए/1-/2-
क्योंकि/1:/2:
मौजूद नहीं है।