Aviso: Desde entonces he mejorado en varios aspectos, tanto en inglés como en programación, así que perdónenme por la mala sintaxis y como dice ahí con mi inglés de la época, era para uso personal, pero lo tengo tirado sin uso.
Para quien quiera mejorarlo, reprogramarlo...etc, que me deje en los créditos

Código
#!/usr/bin/env python # -*- coding: utf-8 -*- #file renamer 1.0 #file renamer is script for rename files easy, this vactions proyect continuous #its development, so that it can be some strange, above all it is written in #spanish and for english speaking can be difficult of understand, this is #beacause the vacation proyect was thought for creator's private use. #modulos import os from sys import exit from time import sleep #bugs conocidos: #despues de usar r -s si se usa r -s -i f - palabra da error como si los #tuvieran el mismo nombre, verificar y arreglar! #implementar #creador de vinculo web de publicidad y tal vez una llave tipo key codificada #para autor #constantes VERSION = "1.0" #funciones def limpiar(): """Limpia consola""" if os.name == "nt": os.system("cls") else: os.system("clear") def cifras(x=0): """cifras(x=0) retorna la cantidad de digitos que tiene una cifra positiva""" i = 0 if x == 0: i = 1 elif x < 0: i = -1 else: while x > 0: x = x / 10 i = i + 1 return i #clases class ListaArchivos(): """ListaArchivos(directorio) Operaciones con archivos""" def __init__(self): self._listaArchivos = [] #temporal def __cargar(self, directorio): """cargar(self, directorio) Carga el directorio, filtra los archivos y prepara tareas para renombrado""" #listado de directorios, archivos y #filtrado de carpetas en la lista de archivos, nombre y extension por #separado self._listaArchivos = [os.path.splitext(archivo) for archivo in os.listdir(directorio) if os.path.isfile(archivo)] return "\n<!> %d archivos cargados" % len(self._listaArchivos) def renombrar(self, directorio, opcion="-s"): retorno = [self.__cargar(directorio)] #nombre con el que se renombrara a los archivos nuevoNombre = [] #procesado para cada archivo en la lista for i, archivo in enumerate(self._listaArchivos, 1): #secuencial if "-s" in opcion: nuevoNombre.append(str(i)) if "-i" in opcion: #if separados ahorran espacio y permiten que al usuario poner #nombre al inicio y al lo que un if-else o if-elif no dejaria if 'i' in opcion: #nombre al inicio nuevoNombre.insert(0, opcion[opcion.index("i") + 1]) if 'f' in opcion: #nombre al final nuevoNombre.append(opcion[opcion.index("f") + 1]) #agregando extension de archivo nuevoNombre.append(archivo[1]) #renombrando try: os.rename(''.join(archivo), ''.join(nuevoNombre)) except os.error: print "<!> Error al renombrar archivo %d" % i #mensaje print "<%d> %s --> %s" % (i, (''.join(archivo)), (''.join(nuevoNombre))) #reinicialización de variable nuevoNombre = [] sleep(0.1) retorno.append("\n<!> %d archivos renombrados" % len(self._listaArchivos)) return retorno class FileRenamer(): """Clase principal file renamer""" def __init__(self): self._listaArchivos = ListaArchivos() def creditos(self): """Imprime creditos del autor: Mini_Nauta""" print ''' |||| |||| || |||| || || |||| || ||| || || |||||||| ||| || || || || || || || || || || || || || || || || || || || || || || || || || || || || ||||||| || || || ||||||| || || || || |||| || || |||| || || |||||| || || || \xb8 Mini_Nauta 2012 File Renamer %s http://protohey.blogspot.com\n\n''' % VERSION def ayuda(self, ayudaRapida=False): """Muestra la ayua del programa""" if not ayudaRapida: print ''' c cd Cambia el directorio si es valido. cd <directory> h help Muestra informacion de ayuda. r rename Renombra archivos. Vease help para mas info. q quit Cierra el programa.\n''' else: print ''' | Comando | Ayuda ------------------------------------------------------------------ | c cd | Cambia el directorio si es valido. cd <directory> | | cd.. cambia al directorio anterior. |r rename | Renombra archivos. Por defecto -s | | -s secuencialmente. | | antiguo. | | -i i <palabra inicio> f <palabra final> (xxxxxxxx01...) | | | h help | Muestra informacion de ayuda. | q quit | Cierra el programa. | exit | Nota: si intenta renombrar con el mismo nombre los archivos, por ejemplo aplicando r -s 2 veces recibirá un error para el archivo o cola de ellos.\n''' def cambiarDirectorio(self, nuevoDirectorio=''): """cambiar_directorio(nuevoDirectorio) Cambia de directorio""" #valor de retorno retorno = None #quitando "cd ", se supone en todos los casos opcion == cd, cd.., cd .. #por lo que no tienen directorio #probando por "cd.." if nuevoDirectorio == "cd..": nuevoDirectorio = nuevoDirectorio[2:] #probando con "cd " sin directorio elif nuevoDirectorio == 'cd ': nuevoDirectorio = nuevoDirectorio[2:] #probando cuando es "cd .." elif nuevoDirectorio == "cd ..": nuevoDirectorio = nuevoDirectorio[3:] #exepción, este viene con directorio else: nuevoDirectorio = nuevoDirectorio[3:] #por si se arrastra una carpeta se le quita las " o las ' if len(nuevoDirectorio) != 0 or 1: nuevoDirectorio = ''.join([char for char in nuevoDirectorio if char != '"' and char != "'"]) #cambiando de directorio try: os.chdir(nuevoDirectorio) except os.error: retorno = "\n<!> Directorio no valido" return retorno def opciones(self, nota=None): """opciones(error=None) Opciones del programa nota(string): Define una nota de aviso para el usuario""" #verificacion de nota if nota != None: if type(nota) == list: for frase in nota: print frase else: print nota opcion = (raw_input("\n<->> ")).encode("utf-8") if len(opcion) == 0: nota = "\n<!> No se han ingresado comandos" #recordar agregar los ayudas para comandos elif opcion == "h" or opcion == "help": limpiar() self.ayuda(True) raw_input() elif opcion[0] == 'r' or opcion[:5] =="rename": if opcion == "rename": nota = self._listaArchivos.renombrar(os.getcwd(), ((opcion[6:]).split(' '))[1:]) else: nota = self._listaArchivos.renombrar(os.getcwd(), ((opcion[1:]).split(' '))[1:]) elif opcion == "cd.." or opcion[0] == 'c' or opcion[:1] == "cd": nota = self.cambiarDirectorio(opcion) elif opcion == 'q' or opcion == "quit" or opcion == "exit": limpiar() print "\n\n\n\n" self.creditos() sleep(2) exit() else: nota = "\n<!> Comando invalido" limpiar() #este es la nota retornada por cambiarDirectorio self.iniciar(nota) def iniciar(self, nota=None): """iniciar(nota=None) Inicio de file renamer, similar a main loop en otras aplicaciones nota: parametro que sirve de puente entre opciones y cambiarDirectorio pero que es necesario que pase por iniciar.""" self.creditos() self.ayuda() print "<-> Directorio actual: \"" + os.getcwd() + '\"' #la nota se le pasa a opciones para que lo muestre #si es que contiene alguna notificacion para el usuario self.opciones(nota) #main def main(): fr = FileRenamer() fr.iniciar() if __name__ == '__main__': main()