Programa para renombrar archivos con "�" por codificación incorrecta

Bueno, no es algo muy complejo, y se podría catalogar de script... pero por si alguna vez os ha ocurrido algún problema de codificación de caracteres con un archivo (a.k.a, "los nombres malditos con un �"), creo que os será útil.

Fixname es un script en Python que renombra archivos que tienen un nombre con una codificación diferente al del sistema de archivos. Normalmente, otras soluciones sería usar mv mediante comodines, o convmv, pero este script lo hace todavía más sencillo. Detecta automáticamente la codificación de caracteres, ofreciéndote diversas opciones como recursividad o modo interactivo.

El proyecto se encuentra en el siguiente enlace: https://bitbucket.org/Nekmo/fixname

Para bajar la última versión, ejecuta:
hg clone https://Nekmo@bitbucket.org/Nekmo/fixname

Nota: Para clonar el proyecto, necesitarás el gestor de versiones mercurial. Seguro que lo tienes en tu gestor de paquetes ;-)

Accede al directorio, y, como root, ejecuta su instalador:
python2 setup.py install

Nota: Necesitarás tener instalado python 2.x (igual o superior a 2.6) en tu sistema. En algunos casos puedes requerir también python-distutils y python-argparse.

Úsalo mediante:
fixname NOMBRE_DEL_ARCHIVO_CON_�


También puedes hacer recursivamente:
fixname -r *


Mira la ayuda con:
fixname --help


Saludos.
Gracias por la aplicación, aunque yo siempre que he necesitado renombrar masivamente ficheros por problemas de codificación he usado convmv, que no se si la conocías
nu_kru escribió:Gracias por la aplicación, aunque yo siempre que he necesitado renombrar masivamente ficheros por problemas de codificación he usado convmv, que no se si la conocías

Lo digo en la entradilla. xD Pero este es mucho más fácil de usar porque no te pregunta el codec (lo selecciona automáticamente), te permite recursividad, puede trabajar archivo por archivo...
capitanquartz escribió:
nu_kru escribió:Gracias por la aplicación, aunque yo siempre que he necesitado renombrar masivamente ficheros por problemas de codificación he usado convmv, que no se si la conocías

Lo digo en la entradilla. xD Pero este es mucho más fácil de usar porque no te pregunta el codec (lo selecciona automáticamente), te permite recursividad, puede trabajar archivo por archivo...


La verdad es que no me había leido la entrada entera, xdd me había metido directamente a la pagina del proyecto y es cuando me he dado cuenta, que el programa es tuyo.

pd: ya estas tardando en subirlo a aur, xD
Puff... aún no he puesto nada en AUR... pero siempre hay una primera vez, ¿no? :D
capitanquartz escribió:Puff... aún no he puesto nada en AUR... pero siempre hay una primera vez, ¿no? :D


Si quieres te lo hago ahora, pero realmente el instalador es necesario( el setup.py) no valdría simplemente con un python2 fixname para lanzarlo? (que de hecho funciona)
El instalador lo único que hace es poner el archivo en /usr/bin, nada más :P bueno, eso, y controlar las dependencias Python.

No te preocupes, puedo ponerme en lo del AUR esta noche...
Voto por la inclusión en AUR ;)
Me viene de lujo, agradezco el aporte! ;)
Hola, en primer lugar muchas gracias por el programa, es justo lo que estaba buscando.
Ahora las dudas.
Yo uso ubuntu 10.04, he instalado el programa segun tu explicacion y no me ha dado ningun error aparente, el problema es al intentar ejecutarlo que me da el siguiene mensaje de error:
Traceback (most recent call last):
  File "/usr/local/bin/fixname", line 20, in <module>
    import argparse
ImportError: No module named argparse


edito: instalando python-distutils y python-argparse desaparece el error.


Lo que yo quiero es que me renombre todos los archivos de un directorio y sus subdirectorios correspondientes, pero no estoy seguro del comando que deberia usar.

edito: "fixname -r *" es mi amigo (no tenia ni pajolera idea de lo que quiere decir "recursivamente" pero creo que ya se por donde van los tiros...)

Muchas gracias de antemano!
Va genial. Sobretodo para aquellos que descargamos con el JD que al descomprimir no cambia la codificación... Gracias tío ;)
xsanti85 escribió:Hola, en primer lugar muchas gracias por el programa, es justo lo que estaba buscando.
Ahora las dudas.
Yo uso ubuntu 10.04, he instalado el programa segun tu explicacion y no me ha dado ningun error aparente, el problema es al intentar ejecutarlo que me da el siguiene mensaje de error:
Traceback (most recent call last):
  File "/usr/local/bin/fixname", line 20, in <module>
    import argparse
ImportError: No module named argparse


edito: instalando python-distutils y python-argparse desaparece el error.


Lo que yo quiero es que me renombre todos los archivos de un directorio y sus subdirectorios correspondientes, pero no estoy seguro del comando que deberia usar.

edito: "fixname -r *" es mi amigo (no tenia ni pajolera idea de lo que quiere decir "recursivamente" pero creo que ya se por donde van los tiros...)

Muchas gracias de antemano!

argparse es el módulo que sustituye a optparse en Python2.7. Si tienes instalado la 2.7 (la cual es la actual de la rama 2.x), no tiene que dar este problema. En la 2.6 no debería dar más problema que este :P

Sobre lo de -r, estás en lo correcto :P

Una anotación, es que hay un (¿bug?) conocido con la recursividad. Si se define un patrón, y se selecciona recursividad, sólo se buscará en aquellas carpetas que concuerden con el patrón. Cuando haya más bugs y features solicitadas lo arreglaré en una futura versión.

¡Saludos!
elchicosinhada escribió:Va genial. Sobretodo para aquellos que descargamos con el JD que al descomprimir no cambia la codificación... Gracias tío ;)


Por cierto, en esos casos de gestores y tal podeis programar para que se ejecute apenas termine la tarea ahorrandoos mas tiempo aun ^^.
13 respuestas