
Quiero eliminar el sufijo de un archivo utilizándolo basename
en un script Bash. Sin embargo, el comando elimina el sufijo solo distinguiendo entre mayúsculas y minúsculas.
¿Cómo puedo eliminar una extensión sin distinguir entre mayúsculas y minúsculas?
Respuesta1
Si desea eliminar una extensión en Bash, puede hacerlo sin herramientas externas. Luego pásalo a basename
:
$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo
Con una extensión de casos mixtos:
$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo
Aquí %
estámanipulación de cuerdas. Eliminará la subcadena coincidente más corta de la parte posterior de lo que está en f
. Coincide .*
con un punto y cero o más caracteres, independientemente de su caso.
Respuesta2
Usar expansión de parámetros
file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}