Script para descomponer una ruta completa a un archivo o directorio, obteniendo el nombre de archivo y extensión (si existen) y ruta completa.
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 34 35 36 37 |
#!/bin/bash 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 |