domingo, 14 de febrero de 2010

Renombrado de archivos

  Pues aquí vengo con otra cosa que contaros, os pongo en situación, para que veis lo fácil que puede ser, tener un pequeño problema y tener que buscar alguna solución para resolverlo.

El problema ocurrió cuando le di un golpecito al cable usb con el ratón, mientras Importaba las fotos de la cámara con F-spot. Se quedaron las fotos a medio exportar, solo reconocía algunas fotografías y otras ya no me las dejaba descargar pues se habían incluido en el catalogo de fotos pero no las reconocía dentro de la memoria de la cámara. Como las tenia importadas a medias, tuve que sacar las fotos con nautilus y al sacarlas no se renombra automáticamente en minúsculas, por lo  que salieron todos los archivos renombrados en mayúsculas.

El problema es que F-Spot no reconoce las fotos con la extensión en mayúsculas, tiene que estar en minúsculas -DSC0001.jpg-. Después de esto, tengo que renombrar 139 fotos de una en una.

  Pero aquí esta la versatilidad de Linux, hay algunos programas reservados para este tipo de acontecimiento dentro de un sistema, creo que esto le habrá pasado a mas de uno. :D

 Para vuestra información estos programas vienen en los repositorios de ubuntu, no tendrás que buscarlos, ni añadir ningún repositorio externo a ubuntu y los encontraras en Synaptic como los nombramos en la receta.

 Pues como llevo haciendo algún tiempo, explicare las dos formas que tenemos de hacerlo, en una terminal y gráficamente.

-Para la terminal explicare el uso de este programa:
  • rename es una orden que nos permitirá renombrar archivos de forma masiva, desde una terminal, es decir, que no tenemos más que ejecutar un comando para renombrar una lista de archivos.

    La sintaxis del comando rename es muy sencilla:

    rename perlexpr [ archivos ]

    Dónde:
  • perlexpr es una expresión regular en lenguaje Perl.
  • y [archivos] es la lista de archivos a los que afectará el comando.
Quizás lo más complicado sea hacer las expresiones regulares. Imaginemos que queremos cambiar la extensión de los archivos .txt del directorio actual por .csv . No tendremos más que ejecutar el comando rename de la siguiente manera:

$ rename 's/\.txt/\.csv/' *.txt
  • 's/\.txt/\.csv/' es la expresión regular que dice "cambia .txt por .csv".
  • * .txt es la lista de archivos a los que hay que aplicarles el cambio.
Supongamos que queremos convertir a minúsculas todos los caracteres del conjunto de archivos contenidos en el directorio actual:

$ rename 'y/A-Z/a-z/' *
  • 'y/A-Z/a-z/' es la expresión regular que dice "cambia los caracteres mayúsculas por minúsculas".
  • * le dice al comando que lo haga en todos los archivos.
Queremos eliminar la extensión de todos los archivos que tengan extensión .bak en el directorio actual:

$ rename 's/\.bak$//' *.bak
  • 's/\.bak$//'
    le dice al comando que renombre los archivos terminados en .bak por el
    nombre del archivo sin .bak, es decir, que elimine el .bak.
  • *.bak le dice al comando que actúe sólo en los archivos con extensión .bak del directorio actual.
Podemos también especificar un directorio cualquiera. Por ejemplo:

$ rename 's/gestor/profesor/' /home/profesor/archivos/*

Vale con esto, creo que los conceptos están medianamente claros.
Una aclaración, he probado la sintaxis de estas ordenes de varias formas, sinceramente no ha funcionado o yo no he dado con la sintaxis que haga funcionar esto.

-Ahora le toca el turno a la opción gráfica.
  • PyRenamer, al igual que la orden rename permite cambiar el nombre de grandes cantidades de archivos.Su funcionamiento y la conversión se realiza rápidamente, crea un paso intermedio llamado “vista previa” para confirmar el siguiente paso, que es renombrar todo lo cambiado como en la "vista previa".
    El funcionamiento es sencillo: utilizando el árbol de directorios de la columna izquierda se navega hasta la carpeta contenedora de los archivos, que se mostrarán en la parte principal de la pantalla, se podrán seleccionar cuáles de ellos se quieren modificar y renombrar utilizando alguna de las posibilidades que nos brinda el programa. 
  • Gprename, tenemos otra opción igual de potente usando GTK y las librerías de Perl, por si no quieres usar Python, por la causa que fuese. El uso es igual que pyrename utiliza un árbol de directorio en la barra lateral y puedes ir navegando por ella, hasta encontrar tu selección, cambias los datos con una vista previa y cuando lo consideres cambias lo renombrado.
 

Pues Listo ya tenéis otra mas.  En mi caso yo he utilizado la opción de gprename. Espero os sea de tanta utilidad como a mí.

2 comentarios:

Unknown dijo...

Hola, mcuha gracias por la info, esta muy buena.
Quisiera hacerte una pregunta.
Cuando ocupo el comando rename para cambiar el nombre de un archivo (siguiendo tu ejemplo, pero sin cambair la extension, solo el nombres) en vez de cambiarse el nombre completo del archivo, me agrega lo que quiero al final del nombre del archivo. Esi decir, si tengo un archivo de nombre Foto.JPG, y quiero que solo se llame 1.JPG, al ocupar rename me cambia a Foto1.JPG
como hago que me cambie el nombre completo??

Ojala puedas ayudarme.
Saludos!

arriero dijo...

Si te fijas en la sintaxis eso que pides no es posible con este programa creo, según la sintaxis que tenia el programa en los man rename.
Tan poco probé mucho, pues solo necesite cambiar una extensión .JPG en minúsculas .jpg , así que no le di mucho uso al tema.
Si quieres intenta con los gráficos haber si es posible hacer lo que quieres.