Es un script muy sencillo, puede servir para aprender un poco de bash y es fácilmente retocable para otros propósitos (se podría decir que ésta es la versión estable porque la he probado yo en un superdirectorio con todo mi album y me ha funcionado correctamente… las demás versiones son experimentales).
#!/bin/bash
# Programa en bash que renombra recursivamente todos los ficheros *.JPG
# a *.jpg y quita todos los espacios en blanco.
func_renombrar()
{
for Fichero in *
do
(
if [ -d "$Fichero" ]; then
cd "$Fichero"
pwd
func_renombrar
fi
)
Extension=`echo $Fichero | gawk -F. '{print $2}'`
if [ "$Extension" = "JPG" ]; then
SinEspacios=`echo $Fichero | sed -s 's/\ //g'`;
NuevoNombre=`echo $Fichero | gawk -F. '{print $1".jpg"}'`
echo "$Fichero -> $NuevoNombre"
mv "$Fichero" "$NuevoNombre"
fi
done
}
func_renombrar
Actualización: Sergi me ha enviado el script retocado con algunas mejoras (no lo he probado todavía, pero se agradece el feedback), y es interesante:
-si hay “.” en medio del fichero, a parte del que precede a la
extensión, lo trate bien
-sea generico (pasandole la vieja y nueva extension por parametros)
-y alguna cosa más pero que ya son manías mías de programar y que no
tienen nada que ver con el caso :P
Actualización1.1 Edgar me ha avisado de un bug en el script del sergi, te dejaba todas las fotos sin extensión. Simplemente se tenía que cambiar la línea 25 que ponía:
mv “$Fichero” “$NuevoNombre”
por esta:
mv “$Fichero” “$NuevoNombre.$nuevaextension”
Ya esta arreglado para quien se lo descargue ahora.
Descargar/ver renamefiles
Actualización2: Sergio me apunta a otra posible solución.
Algunos links de información:
Bash: Ejemplos
Bash by example, part2