
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]}