Bash 取出檔名的 basename 與 extension name

取出傳入參數檔名 $src(hello.1.txt)基礎檔名(hello.1)副檔名(txt)

{Parameter%word} 從後面開始施以 最短 match 補捉 .* ,抓到 .* = .txt,將之刪除之,剩下 hello.1% 最短 match,%% 最長 match。因為我們要抓在最後一個點 後面的 extesion,所以要用最短 match 。

base="${src%.*}" // hello.1.txt -> hello.1

{Parameter##word} 從前面開始施以 最長 match 補捉 *., 抓到 *. = hello.1.,將之刪除之,剩下 txt# 最短 match,## 最長 match。因為我們要抓最後一個點的 前面所有字串,所以要用最長 match 。

ext="${src##*.}" // hello.1.txt -> txt

Reference:

comments powered by Disqus