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

2022-01-30 06:52:37 字數 1844 閱讀 1838

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

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

linux:/qinys #file_name='get_name.tar.gz'

linux:/qinys #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=$

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=$

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=$

linux:/qinys #echo "the extension name is :"$name

the extension name is :gz

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

原理說明:

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

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

shell提取檔名和目錄名

用於字串的讀取,提取和替換功能,可以使用 提取字串1.提取檔名 root localhost test var mnt aaa test test.txt root localhost test echo test.txt2.提取字尾 root localhost test echo txt3.提取...

shell 提取檔名和目錄名

在寫shell指令碼中,經常會有需要對路徑和檔名做處理。有時候犯不著用sed命令來操作。bash提供的變數操作和一些外部命令都能很好的處理。var dir1 dir2 file.txt echo file.txt 在shell指令碼中,可以使用變數來儲存這個結果,再加以利用,如file 我們將 換成...

shell指令碼 批量修改檔名 檔名中新增字元

舉例如下 批量建立10個隨機字串的檔案,要求每個檔名後面新增 aaa,字尾名不變 root localhost goodboy ls adddbbdedf.html baacjaiija.html bhcfaabcfh.html dgjdcdfbca.html efejadfdji.html agd...