【shell】分別提取檔名中的基本名與副檔名
檔名是有【基本名】與【副檔名】兩部分構成
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)##屬於貪婪操作,它從左向右找出匹配萬用字元的最長結果。