Quiero obtener en un script el nombre de un archivo y su extensión, pero por separado. Por el momento la mejor solución que he encontrado es la siguiente:
NOMBRE=`echo "$FILE" | cut -d'.' -f1` EXTENSION=`echo "$FILE" | cut -d'.' -f2`
El problema es que esta solución no es correcta porque no funciona cuando el archivo tiene varios puntos .
en su nombre. Si fuera por ejemplo a.b.js
, entonces el nombre sería a
y la extensión b.js
, por lo que no es correcto.
Si pudiera usar Python, simplemente haría:
archivo, extension = os.path.splitext(path)
En cualquier caso no quiero ejecutar el intérprete de Python simplemente para esto, así que me gustaría que alguien me indicara una solución mejor.
Respuestas
En primer lugar, extrae el nombre completo del archivo a partir de su ruta y después sepáralo en nombre y extensión utilizando lo siguiente:
nombreCompleto=$(basename "$rutaDelArchivo") extension="${nombreCompleto##/.}" nombre="${nombreCompleto%./}"
Otra forma de extraer el nombre completo a partir de la ruta sería centrarte en la última barra /
de la ruta en vez del punto. La ventaja es que así te funcionaría incluso cuando la extensión del archivo sea muy rara:
nombreCompleto="${rutaDelArchivo##//}" extension="${nombreCompleto##/.}" nombre="${nombreCompleto%.*}"

@librosweb