切分檔名提取副檔名或提取檔名

2022-05-28 15:57:12 字數 1735 閱讀 9635

有些指令碼要根據檔名進行各種處理,有時候需要保留檔名拋棄檔案字尾,也有時候需要檔案字尾不要檔名,這類提取檔案部分的操作使用shell的內建功能就能實現。需要用到的幾個操作符有:%%%###

從右向左匹配 :% 和 %% 操作符的示例

#!/bin/bash

#提取檔名,刪除字尾。

file_name="text.gif"

name=$

echo file name is: $name

輸出結果:

file name is: test

# $含義:從$var中刪除位於 % 右側的萬用字元左右匹配的字串,萬用字元從右向左進行匹配。

現在給變數 name 賦值,name=text.gif,那麼萬用字元從右向左就會匹配到 .gif,所有從 $var 中刪除匹配結果。

# % 屬於非貪婪操作符,他是從左右向左匹配最短結果;%% 屬於貪婪操作符,會從右向左匹配符合條件的最長字串。

file_name="text.gif.bak.2012"

name=$

name2=$

echo file name is: $name

echo file name is: $name2

輸出結果:

file name is: test.gif.bak

//使用 % file name is: test

//使用 %% 操作符 %%

使用 .* 從右向左貪婪匹配到 .gif.bak.2012

從左向右匹配:# 和 ## 操作符示例

#!/bin/bash

#提取字尾,刪除檔名。

file_name="text.gif"

suffix=$

echo suffix is: $suffix

輸出結果:

suffix is: gif

# $ 含義:從 $var 中刪除位於 # 右側的萬用字元所匹配的字串,萬用字元是左向右進行匹配。 

# 跟 % 一樣,# 也有貪婪操作符 ## 。

file_name="text.gif.bak.2012.txt" 

suffix=$

suffix2=$

echo suffix is: $suffix

echo suffix is: $suffix2

輸出結果:

suffix is: text.gif.bak.2012

//使用 # suffix2 is: txt

//使用 ## 操作符 ##

使用 *. 從左向右貪婪匹配到 text.gif.bak.2012

示例2,定義變數 url="www.1987.name"

echo $      #移除 .* 所匹配的最右邊的內容。

www.1987

echo $ #將從右邊開始一直匹配到最左邊的 *. 移除,貪婪操作符。

wwwecho $ #移除 *. 所有匹配的最左邊的內容。

1987.name

echo $ #將從左邊開始一直匹配到最右邊的 *. 移除,貪婪操作符。

name

獲取檔名和副檔名

string afirstname afile.substring afile.lastindexof 1,afile.lastindexof afile.lastindexof 1 檔名 string alastname afile.substring afile.lastindexof 1,af...

C 提取檔名 C

假設有乙個字串包含了檔名 副檔名和路徑,如strfilename d c 程式設計 實驗3 myfile.txt 請使用c 編寫乙個靜態方法,該方法能夠取出路徑中的檔名 myfile.txt 乙個包含了檔名,副檔名和路徑的字串。字串中的檔名。strfilename d c 程式設計 實驗3 myfi...

問題 C C 提取檔名

假設有乙個字串包含了檔名 副檔名和路徑,如strfilename d c 程式設計 實驗3 myfile.txt 請使用c 編寫乙個靜態方法,該方法能夠取出路徑中的檔名 myfile.txt 乙個包含了檔名,副檔名和路徑的字串。字串中的檔名。input copy strfilename d c 程式...