Esta es una solución en python que maneja el caso donde los archivos no están necesariamente en el mismo directorio.
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."
- Guarde esto en un archivo (digamos) rename.py.
- Cambie
rootdir
al directorio más externo en consideración (use el nombre de ruta completo que comience con /. No se permiten shorthands o variables de entorno como ~) No es necesario poner \ antes de caracteres especiales; por ejemplo, si el directorio más externo es /.../Mi HDD, ponga rootdir = "/.../My HDD"
NOT rootdir = "/.../My\ HDD"
( tenga en cuenta las "s" [Estoy siendo explícito solo porque puede no estar familiarizado con Python. No faltar al respeto destinado a.]
- Cambie
logfile
a la ubicación deseada del archivo de registro. Al final, este archivo contendrá la lista de archivos renombrados, para referencia futura.
- Llamar
python rename.py
.
Advertencia: haga una prueba en una muestra pequeña antes de arriesgar un GB completo de música.
Detalles: el cambio de nombre se realiza desde los archivos más internos hacia afuera.
find .
nombre de un subdirectorio precede a su contenido. Entonces, si tiene un archivo/1:/2:
primero,/1:/
se le cambiará el nombre/1-/
. Ahora no puede cambiar el nombre/1:/2:
a/1-/2-
porque/1:/2:
no existe.