Algo de Linux: noviembre 2009

viernes, 13 de noviembre de 2009

El shell de linux: Comando rename - Renombrado masivo de archivos

Cuando se trabaja fundamentalmente en terminales de línea de comandos nos viene muy bien conocer herramientas como rename.

rename es un comando que nos permite renombrar archivos de forma masiva desde la shell de Linux, es decir, que no tenemos más que ejecutar un comando para renombrar una lista de archivos con un patrón común.

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.

Veamos un ejemplo sencillo: 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.
Otro ejemplo: 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.
Otro ejemplo: Imaginemos que 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.
En estos ejemplos hemos trabajado sólo en el directorio actual, pero se puede especificar un directorio cualquiera. Por ejemplo:

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

Una cuestión importante: Si estoy trabajando en un script bash y quiero utilizar una variable del script en la expresión regular de perl, tengo que exportarla para convertirla en una variable de entorno:

export USUARIO

Una vez exportada, ya puedo usarla en la expresión regular haciendo referencia a ella de la siguiente manera: $ENV{'USUARIO'} Viéndolo en el ejemplo:

# rename 's/gestor/$ENV{'USUARIO'}/' /home/profesor/$USUARIO/.nautilus/metafiles/*

miércoles, 4 de noviembre de 2009

KolourPaint: El Paint de Linux

A veces uso capturas de pantalla para explicar alguna cuestión sobre un cuadro de diálogo de una aplicación o una ventana y me gusta marcar y escribir sobre la imagen para añadir comentarios. Hoy necesitaba una aplicación sencilla para hacer ésto, no tenía ninguna a mano y no iba a utilizar gimp para una cosa tan simple.

Buscando un poco en google, encontré justo lo que necesitaba: KolourPaint, una aplicación similar al Paint de Windows, pero con mayor funcionalidad y la posibilidad de abrir gran cantidad de tipos de archivos de imagen.


Lo tenemos tanto en los repositorios de Debian como en los de Ubuntu. Así que podemos instalarlo mediante synaptic o directamente desde un terminal con:

# apt-get install kolourpaint

Una vez instalado, se añadirá una entrada al menú Gráficos.

Actualización 15/10/2011:
El nombre del paquete en Debian Squeeze es kolourpaint4:

# apt-get install kolourpaint4