miércoles, 23 de noviembre de 2011

Shell Bash: Descomponer una ruta en directorios, nombre de archivo y extensión

El siguiente script (shell Bash) descompone una ruta en directorios, nombre de archivo y extensión.

#!/bin/bash

# Script para descomponer una ruta completa a un archivo o
# directorio, obteniendo
el nombre de archivo y extensión (si
# existen) y ruta hasta los mismos


for RutaCompleta in $1
do
# Comenzamos extrayendo la parte derecha desde el ultimo caracter
# "/", es decir, el archivo

NombreArchivo="${RutaCompleta##*/}"

# Longitud de la ruta es el total de caracteres menos el largo del
# nombre de archivo

LargoRuta="${#RutaCompleta} - ${#NombreArchivo}"

# Extraemos la ruta desde el caracter 0 hasta el caracter final de
# largo de ruta

RutaSola="${RutaCompleta:0:$LargoRuta}"

# Lo siguiente es extraer nombre de archivo
NombreSolo="${NombreArchivo%.[^.]*}"
# Extension se obtiene eliminando del nombre completo el nombre mas
# el punto

Extension="${NombreArchivo:${#NombreSolo} + 1}"

# Las 2 lineas anteriores fallan si no hay extension por lo que es
# necesario comprobar que no
se de el caso de que haya extension
# pero no nombre ya que en ese caso la ext seria el nombre

if [[ -z "$NombreSolo" && -n "$Extension" ]]; then
NombreSolo=".$Extension"
Extension=""
fi
done
# Este es el resultado del script
echo
echo "Este es el resultado del script:"
echo
echo La ruta completa es:
echo $RutaCompleta
echo
echo "Ruta.........: \"$RutaSola\""
echo "Nombre.......: \"$NombreSolo\""
echo "Extension....: \"$Extension\""
echo

Este código ha sido extraído de la web Archivos Log

No hay comentarios: