Modificar y renombrar imagenes en un directorio remoto desde la linea de comandos

Muchos trucos hay para hacer trabajos en lotes, pero cuando lo tienes que hacer en un servidor remoto (por ejemplo donde tienes hospedada la web) no puedes utilizar Automator, ni Better Finder renamer, ni ninguna de esas aplicaciones bonitas que tenemos en nuestro ordenador, solo disponemos de una consola y nuestros conocimientos de la linea de comandos, vamos a plantear un supuesto, tenemos en un directorio un numero indeterminado de imágenes con espacios en los nombres y deseamos renombrarlos de forma serializada en un primer lugar, posteriormente los vamos a dejar todos en un tamaño igual (800×600 por ejemplo) y posteriormente los vamos a copiar a un directorio de miniaturas (thumbs) donde procederemos a generar las minaturas.

1.- Quitar los espacios en blanco de los nombres

Para ello vamos a crear un fichero de texto al que vamos a llamar quitaespacios.sh

nano -w quitaespacios.sh

Si no dispones de nano, puedes utilizar pico, vim o cualquier otro programa de edición en modo de consola, tambien me sirve que lo escribas en tu ordenador y lo subas via ftp, pero como el tema va de comandos de consola, vamos a suponer que utilizas nano y dentro de el vas a pegar el siguiente código.

#!/bin/sh
find . -name ‘* *’ | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed ‘s/ /_/g;’`
mv «${FILE}» ${NEWFILE}
echo ${NEWFILE}
done

Después le damos permisos y desde el directorio que lo queramos ejecutar, lo ejecutamos o lo que seria

chmod 755 quitaespacios.sh
chmod +x quitaespacios.sh
./quitaespacios.sh

Y simplemente relajare y disfruta mientras lee secuencialmente todos los nombres de los ficheros en el directorio y sustituye los espacios en blanco por _ solucionando el problema con muchos servidores webs que no soportan que los nombres de ficheros lleven espacios en blanco.

Esta idea esta sacada de esta web

2.- Renombrar los ficheros secuencialmente.

Esto os va a dejar actualizados porque se hace con solo una linea de comandos

ls *.jpg | awk ‘BEGIN{a=0}{printf»mv %s -T cambialo_%04d.jpg\n», $0, a++}’ | bash

Donde cambialo es el nombre de la serie y jpg es la extension del fichero que quieres renombrar es decir si la serie quieres que sea fotos_de_mallorca pon eso donde pone cambiado y si lo que renombras son ficheros png doc o lo que sea donde pone jpg pon esa extensión.

3.- Redimensionar las imágenes

Si tienes un directorio lleno de imágenes, te las puedes bajar todas y procesarlas en un proceso batch en Photoshop y luego subirlas todas, es un proceso engorroso y con las ADSL de aquí resubir un directorio con 100, 300 o 1000 fotos puede ser un autentico coñazo y mas si tenemos en cuenta que se puede hacer en linea, con una sola linea de comando que seria algo así.

mogrify -monitor -resize 800×600 *.jpg

lo cual basicamente lo que hace es coger todos los jpg del directorio en cuestión y modificarlos a tamaños de 800×600 o equivalentes manteniendo la proporción, mogrify es un comando de ImageMagick y suele estar instalado en todos los servidores web el -monitor lo que hace es que la transformación vaya mostrando progreso en la pantalla de forma que se vea que esta haciendo algo.

4.- Crear las miniaturas de dichas imágenes

Lo que vamos a hacer es muy simple vamos a crear un directorio (miniaturas) le vamos a dar permisos para que sea visto en el servidor web y luego vamos a crear las miniaturas.

make miniaturas
chmod 755 miniaturas
cp *.jpg miniaturas/
cd miniaturas
mogrify -monitor -resize 160×120 *.jpg
mv *.jpg -T miniaturas_*.jpg

Basicamente creamos directorio, le damos permisos, hacemos una copia del contenido del directorio en el directorio de miniaturas, nos metemos en el directorio de miniaturas, cambiamos el tamaño y renombramos el fichero para que sepamos que es una miniatura… y proceso terminado.

Este proceso es muy util con pequeñas modificaciones para subir grandes cantidades de imágenes a las galerías de fotos de las webs, si te ha gustado o si tienes alguna duda sobre el mismo simplemente deja un comentario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *