文件名是有【基本名】與【擴展名】兩部分構成
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)##屬於貪婪操作,它從左向右找出匹配通配符的最長結果。

