martes, 30 de marzo de 2010

[Linux] Convertir y cambiar extensión de archivos

Tengo un montón de iconos en formato .png que debo convertir a .bmp para que sean utilizables por Access. Seguro que habrá algún programita en Windows que lo haga, pero prefiero tirar de consola en Linux, y de la aplicación convert que está contenida en el paquete imagemagick. Únicamente necesitamos indicarle el archivo de entrada y el de salida, y a partir de la extensión del segundo archivo, sabe qué tipo de conversión debe realizar.

En una única línea:
El problema de esta forma de hacerlo es que un archivo imagen.png se convertiría en imagen.png.bmp. Esta forma es la buena:
for i in *png; do convert $i $i.bmp; done

De este modo, bash recorta por la derecha la primera ocurrencia que contenga la cadena .png en la variable i, y posteriormente añade la extensión que nos interesa.
for i in *png; do convert $i ${i%.png}.bmp; done

El tiempo que requiere la conversión de 1000 iconos de 32x32 pixels, en un Debian virtualizado con VirtualBox (anfitrión Windows) es de 27 segundos.

No hay comentarios:

Datos personales