【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)##屬於貪婪操作,它從左向右找出匹配通配符的最長結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM