Eliminar una extensión de archivo sin distinguir entre mayúsculas y minúsculas en Bash

Eliminar una extensión de archivo sin distinguir entre mayúsculas y minúsculas en Bash

Quiero eliminar el sufijo de un archivo utilizándolo basenameen 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]}

información relacionada