Ini adalah solusi dalam python yang menangani kasus di mana file tidak harus dalam direktori yang sama.
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."
- Simpan ini ke file (katakanlah) rename.py.
- Ubah
rootdir
ke direktori terluar yang sedang dipertimbangkan (Gunakan nama jalur lengkap yang dimulai dengan /. Tidak ada singkatan atau variabel env seperti ~ diizinkan). Tidak perlu meletakkan \ sebelum karakter khusus - misalnya jika dir paling luar adalah /.../ HDD saya, masukkan rootdir = "/.../My HDD"
TIDAK rootdir = "/.../My\ HDD"
(Catat "s) [Saya menjadi eksplisit ini hanya karena Anda mungkin tidak terbiasa dengan python. dimaksudkan.]
- Ubah
logfile
ke lokasi file log yang diinginkan. Pada akhirnya, file ini akan berisi daftar file yang diganti namanya - untuk referensi di masa mendatang.
- Panggil
python rename.py
.
Peringatan: Lakukan tes pada sampel kecil sebelum mempertaruhkan seluruh GB musik.
Detail: Mengganti nama dilakukan dari file paling dalam ke luar.
find .
nama subdirektori mendahului isinya. Jadi jika Anda memiliki file/1:/2:
terlebih dahulu/1:/
akan diubah namanya menjadi/1-/
. Sekarang Anda tidak dapat mengganti nama/1:/2:
menjadi/1-/2-
karena/1:/2:
tidak ada.