นี่คือวิธีการแก้ปัญหาในหลามซึ่งจัดการกรณีที่ไฟล์ไม่จำเป็นต้องอยู่ในไดเรกทอรีเดียวกัน
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."
- บันทึกสิ่งนี้เป็นไฟล์ (พูด) rename.py
- เปลี่ยน
rootdir
เป็นไดเร็กทอรี outermost ภายใต้ข้อควรพิจารณา (ใช้ชื่อพา ธ แบบสมบูรณ์เริ่มต้นด้วย / ไม่มีตัวแปรชวเลขหรือ env เช่น ~ อนุญาต) ไม่จำเป็นต้องใส่ \ ก่อนอักขระพิเศษ - ตัวอย่างเช่นถ้า dir ด้านนอกสุดคือ /.../My HDD ของฉันใส่rootdir = "/.../My HDD"
NOT rootdir = "/.../My\ HDD"
(หมายเหตุ "s) [ฉันเป็นคนชัดเจนเพราะคุณอาจไม่คุ้นเคยกับงูหลาม ตั้งใจ.]
- เปลี่ยน
logfile
เป็นตำแหน่งที่ต้องการของ logfile ในท้ายที่สุดไฟล์นี้จะมีรายการไฟล์ที่เปลี่ยนชื่อ - สำหรับการอ้างอิงในอนาคต
- โทร
python rename.py
.
คำเตือน: อย่าทดสอบกับตัวอย่างเล็ก ๆ ก่อนที่จะเสี่ยงกับเพลงทั้งหมด GB
รายละเอียด: การเปลี่ยนชื่อจะดำเนินการจากไฟล์ด้านในสุดด้านนอก
find .
ชื่อของไดเรกทอรีย่อยนำหน้าเนื้อหา ดังนั้นถ้าคุณมีไฟล์/1:/2:
แรกจะเปลี่ยนชื่อเป็น/1:/
/1-/
ตอนนี้คุณไม่สามารถเปลี่ยนชื่อ/1:/2:
เป็น/1-/2-
เพราะ/1:/2:
ไม่มีอยู่