1. 程式人生 > >【shell】分別提取檔名中的基本名與副檔名

【shell】分別提取檔名中的基本名與副檔名

檔名是有【基本名】與【副檔名】兩部分構成

image

 

1.藉助【%】操作符從檔名中提取基本名部分

Linux:/qinys # file_name='get_name.tar.gz'
Linux:/qinys # name=${file_name%.*}
Linux:/qinys # echo "The File name is :"$name
The File name is :get_name.tar

從輸出結果我們可以看出,已經成功從檔名get_name.tar.gz中提取基本名:get_name.tar

原理說明:

(1)從file_name中刪除位於%右側的萬用字元(上例中的是.*)所匹配到的字串。萬用字元從右往左進行匹配

(2)%屬於非貪婪操作,它從右向左找出匹配萬用字元的最短結果。

 

2.藉助【%%】操作符從檔名中提取基本名部分

Linux:/qinys # file_name='get_name.tar.gz'
Linux:/qinys # name=${file_name%%.*}
Linux:/qinys # echo "The File name is :"$name
The File name is :get_name

從輸出結果我們可以看出,已經成功從檔名get_name.tar.gz中提取基本名:get_name

原理說明:

(1)從file_name中刪除位於%%右側的萬用字元(上例中的是.*)所匹配到的字串。萬用字元從右往左進行匹配

(2)%%屬於貪婪操作,它從右向左找出匹配萬用字元的最長結果。

 

3.藉助【#】操作符從檔名中提取副檔名部分

Linux:/qinys # file_name='get_name.tar.gz'
Linux:/qinys # name=${file_name#*.}
Linux:/qinys # echo "The Extension name is :"$name
The Extension name is :tar.gz

從輸出結果我們可以看出,已經成功從檔名get_name.tar.gz中提取基本名:tar.gz

原理說明:

(1)從file_name中刪除位於#右側的萬用字元(上例中的是*.)所匹配到的字串。萬用字元從左往右進行匹配

(2)#屬於非貪婪操作,它從左向右找出匹配萬用字元的最短結果。


4.藉助【##】操作符從檔名中提取副檔名部分

Linux:/qinys # file_name='get_name.tar.gz'
Linux:/qinys # name=${file_name##*.}
Linux:/qinys # echo "The Extension name is :"$name
The Extension name is :gz

從輸出結果我們可以看出,已經成功從檔名get_name.tar.gz中提取基本名:gz

原理說明:

(1)從file_name中刪除位於##右側的萬用字元(上例中的是*.)所匹配到的字串。萬用字元從左往右進行匹配

(2)##屬於貪婪操作,它從左向右找出匹配萬用字元的最長結果。