Coba lakukan seperti ini
#!/usr/bin/python
import os
# Collect the names and type (file or directory)
filenames = os.listdir(".")
filetypes = map(lambda x: os.path.isdir(x), filenames)
files = zip(filenames, filetypes)
files = sorted(files, key=lambda x: (x[0].lower(), x[1]))
# Create a set of downcased filenames for quick lookup
files_lower = set()
for f in files:
files_lower.add(f[0].lower())
previous_name = ""
# Rename the files
for f in files:
if f[0].lower() == previous_name.lower() and f[1] is True:
# Find an unused index
c = 0
while True:
f_rename = f[0].lower() + "_" + str(c)
if f_rename.lower() in files_lower:
c += 1
else:
print("renaming %s to %s" % (f[0], f_rename))
os.rename(f[0], f_rename)
files_lower.add(f_rename.lower())
break
previous_name = f[0]
Misalkan saya memiliki entri berikut dalam direktori
$ ls -F
a A/ b/ B/ B_0/ bb/ bB/ Bb/ BB/ c/ d/ D/
Dengan kata lain, mereka semua adalah direktori kecuali untuk "a" yang merupakan file biasa. Menjalankan skrip ini akan memberikan output berikut
renaming A to a_0
renaming b to b_1
renaming Bb to bb_0
renaming bB to bb_1
renaming bb to bb_2
renaming d to d_0
dan direktori sekarang berisi entri-entri berikut
$ ls -F
a a_0/ B/ B_0/ b_1/ BB/ bb_0/ bb_1/ bb_2/ c/ D/ d_0/
Skrip hanya mengganti nama direktori (Anda menyebutkan bahwa Anda hanya mengganti nama direktori) dan mengonversi nama apa pun yang diubah namanya menjadi semua huruf kecil (berdasarkan pada contoh Anda). Juga berhati-hati untuk tidak mengubah nama direktori menjadi nama yang sudah ada (maka b -> b_1 dalam contoh saya sejak B_0 sudah ada).
Semoga ini berhasil untuk Anda.