Renombrado de ficheros de minúsculas a mayúsculas
Nombre: min2may
Autor: José Luis García Pallero
Lenguaje: Bash
Licencia: GPL v.3 o superior
Propósito: Renombra archivos de minúsculas a mayúsculas
Dependencias: Bash
Código:
#!/bin/bash
# Verificación del número de argumentos de entrada
if [ $# -eq 0 ]; then
echo
echo "(C), 2010, José Luis García Pallero, jgpallero@gmail.com"
echo "Este programa queda sujeto a la GPLv3 o superior (www.fsf.org)"
echo
echo "`basename $0`: paso de nombres de archivos de minúsculas a mayúsculas"
echo
echo " `basename $0` [-r] [-d] archivos"
echo
echo " -r: indicador de cambio de nombre recursivo (subdirectorios)"
echo " -d: indicador de cambio de nombre a los directorios"
echo " archivos: archivos cuyo nombre hay que cambiar"
echo
exit 0
fi
################################################################################
#nombre de este script
NPROG=`echo $0`
#variables indicadoras de conversión recursiva y renombrado de directorios
RECUR=0
DIREC=0
#comprobamos si hay que convertir los directorios de forma recursiva
for i in $*; do
#capturamos los posibles argumentos optativos
if [ "$i" == "-r" ]; then
#indicamos conversión recursiva
RECUR=1
#añadimos el argumento optativo
AOPT+=" -r"
elif [ "$i" == "-d" ]; then
#indicamos renombrado de directorios
DIREC=1
#añadimos el argumento optativo
AOPT+=" -d"
fi
done
################################################################################
#recorremos todos los argumentos de entrada
for i in $*; do
#sólo trabajamos si el archivo existe
if [ -a "$i" ]; then
#nos quedamos con el nombre de la ruta hasta el archivo
NRUTA=`dirname $i`
#nos quedamos con el nombre del archivo
NARCH=`basename $i`
#pasamos el nombre del archivo a mayúsculas
NMAY=`echo $NARCH | tr '[:lower:]' '[:upper:]'`
#distinguimos entre directorio y archivo regular
if [ -d "$i" ]; then
#renombramos lo que hay dentro, si ha lugar
if [ $RECUR -eq 1 ]; then
$NPROG $AOPT $i/*
fi
#renombramos, si ha lugar
if [ $DIREC -eq 1 ] && [ "$NMAY" != "$NARCH" ]; then
#renombramos
mv $i $NRUTA/$NMAY
fi
else
#sólo renombramos si el nombre no está ya en mayúsculas
if [ "$NMAY" != "$NARCH" ]; then
#renombramos
mv $i $NRUTA/$NMAY
fi
fi
fi
done
Ejemplos de uso: min2may ruta/*, min2may -r ruta/*, min2may -d ruta/*, min2may -d -r ruta/*,
Comentarios: No sé si habrá algún comando de UNIX para hacer esta tarea, pero tardo menos en hacer el script que en buscarlo.