Esta é uma solução em python que lida com o caso em que os arquivos não estão necessariamente no mesmo diretório.
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."
- Salve isso em um arquivo (digamos) rename.py.
- Mude
rootdir
para o diretório mais externo em consideração (use o nome completo do caminho começando com /. Nenhuma abreviação ou variáveis env como ~ permitida). Não é necessário colocar \ antes de caracteres especiais - por exemplo, se o diretório mais externo for /.../My HDD, coloque rootdir = "/.../My HDD"
NOT rootdir = "/.../My\ HDD"
(Observe os "s) [Estou sendo explícito apenas porque você pode não estar familiarizado com o python. Sem desrespeito pretendido.]
- Mude
logfile
para o local desejado do arquivo de log. No final, esse arquivo conterá a lista de arquivos renomeados - para referência futura.
- Ligue
python rename.py
.
Aviso: teste em uma pequena amostra antes de arriscar um GB inteiro de música.
Detalhes: A renomeação é realizada a partir dos arquivos mais internos.
find .
nome de um subdiretório precede seu conteúdo. Portanto, se você tiver um arquivo/1:/2:
primeiro/1:/
, será renomeado para/1-/
. Agora você não pode renomear/1:/2:
para/1-/2-
porque/1:/2:
não existe.