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