Це рішення в python, яке обробляє той випадок, коли файли не обов'язково знаходяться в одному каталозі.
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
до самого зовнішнього каталогу, що розглядається (Використовуйте повну назву шляху, починаючи з /. Немає скорочень або змінних env, таких як ~ дозволено). Не потрібно ставити \ перед спеціальними символами - наприклад, якщо самий зовнішній dir - /.../My HDD, поставте rootdir = "/.../My HDD"
NOT rootdir = "/.../My\ HDD"
(Зауважте "s" [Я це явно лише тому, що ви, можливо, незнайомі з python. Немає неповаги призначений.]
- Змініть
logfile
на потрібне місце реєстраційного файлу. Зрештою, цей файл буде містити список файлів, перейменованих - для подальшої довідки.
- Дзвінок
python rename.py
.
Попередження: зробіть тест на невеликому зразку, перш ніж ризикувати цілим ГБ музики.
Деталі: Перейменування виконується із внутрішніх файлів назовні.
find .
імені підкаталогу передує його вміст. Тож якщо у вас є файл,/1:/2:
спочатку/1:/
буде перейменований у/1-/
. Тепер ви не можете перейменувати/1:/2:
в/1-/2-
тому , що/1:/2:
не існує.