在 Bash 中刪除檔案副檔名(不區分大小寫)

在 Bash 中刪除檔案副檔名(不區分大小寫)

basename我想透過在 Bash 腳本中使用來刪除檔案的後綴。不過,該指令僅以區分大小寫的方式刪除後綴。

如何不區分大小寫地刪除副檔名?

答案1

如果您想刪除 Bash 中的擴展,無需外部工具即可完成此操作。然後,將其傳遞給basename

$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo

使用混合大小寫擴充:

$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo

%字串操作。它將從 中的內容後面刪除最短的匹配子字串f。匹配.*一個點和零個或多個字符,無論大小寫。

答案2

使用參數擴展

file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}

相關內容