Hola a todosfoto de Eloy Mier Pérez

Hoy vamos a mostrar como el shell de linux puede en muchas ocasiones ser una de las herramientas mas poderosas con las que contamos en este SO. El caso es que en una de las listas a las que estoy suscrito un compañero a solicitado ayuda para de «alguna forma» poder convertir las extensiones de los ficheros que actualmente se encuentran en minúsculas a mayúsculas. La conversión debe ser realizada de forma recursiva.

La verdad es que me ha costado unas horas el script, no estoy acostumbrado a tratar con este tipo de lenguaje. El script finalmente ha quedado como a continuación aparece:

#!/bin/bash

# Por Eloy Mier Perez
#
# Script para cambiar extensiones mayúsculas a partir de una ruta pasada como parámetro al script
#
# El script cambia TODAS las extensiones de todos los ficheros encontrados bajo la ruta indicada
#
# Recibe como parámetro el directorio desde el cual comenzar a realizar las modificaciones
# En el caso de no especificar directorio inicial se entiende .
#
# El directorio inicial debe estar indicado o bien con ruta relativa al script o bien absoluta
# pero SIEMPRE terminado en /

if [ -z «$1» ]; then
dir_inicial=.
else
dir_inicial=$1
fi

echo «Comienza la busqueda desde \»$dir_inicial\» …»

IFS=$’\n\r’
for fichero in $(find $dir_inicial -type f -iname «*.*» -printf %h\/%f\\n\\r);
do
#obtendpgo la posicion del punto en el nombre del fichero
punto=`expr index $fichero .`

if [ $punto -gt 1 ]; then

antepunto=`expr $punto – 1` #Posicion previa al punto
postpunto=`expr $punto + 1` #Posicion postpunto
nombre=`expr substr $fichero 1 $antepunto`
ext=`expr substr $fichero $postpunto ${#fichero}`
#Conversion a mayusculas de la extension
ext=`echo $ext | tr ‘[:lower:]’ ‘[:upper:]’`

echo Renombrando fichero $dir_inicial$fichero a $dir_inicial$nombre.$ext
mv -v $fichero $nombre.$ext
fi
done

Dejo la descarga del sh preparada por si acaso el hosting baila algún carácter y tenéis problemas copiando el contenido del articulo.[download id=»34″]

He subido el script como primera versión, si alguien necesita alguna modificación sobre el mismo, puede plantearla y veremos lo que se puede hacer.

Un saludo a todos y hasta la próxima.

You must be logged in to post a comment.