1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/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}" # Extraermos 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 |