Linuxshellh中如何提取文件名和目錄名-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Linux shellh中如何提取文件名和目錄名,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、安遠(yuǎn)網(wǎng)絡(luò)推廣、微信小程序開發(fā)、安遠(yuǎn)網(wǎng)絡(luò)營(yíng)銷、安遠(yuǎn)企業(yè)策劃、安遠(yuǎn)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供安遠(yuǎn)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn

很多時(shí)候在使用Linux的shell時(shí),我們都需要對(duì)文件名或目錄名進(jìn)行處理,通常的操作是由路徑中提取出文件名,從路徑中提取出目錄名,提取文件后綴名等等。例如,從路徑/dir1/dir2/file.txt中提取也文件名file.txt,提取出目錄/dir1/dir2,提取出文件后綴txt等。

下面介紹兩種常用的方法來進(jìn)行相關(guān)的操作。

一、使用${}


1、${var##*/}
該命令的作用是去掉變量var從左邊算起的最后一個(gè)'/'字符及其左邊的內(nèi)容,返回從左邊算起的最后一個(gè)'/'(不含該字符)的右邊的內(nèi)容。使用例子及結(jié)果如下:

Linux shellh中如何提取文件名和目錄名

從運(yùn)行結(jié)果可以看到,使用該命令,可以提取出我們需要的文件名file.txt。

若使用時(shí)在shell程序文件中,可以使用變量來保存這個(gè)結(jié)果,再加以利用,如file=${var##*/}

2、${var##*.}


該命令的作用是去掉變量var從左邊算起的最后一個(gè)'.'字符及其左邊的內(nèi)容,返回從左邊算起的最后一個(gè)'.'(不含該字符)的右邊的內(nèi)容。使用例子及結(jié)果如下:

Linux shellh中如何提取文件名和目錄名

從運(yùn)行結(jié)果可以看到,使用該命令,可以提取出我們需要的文件后綴。

如果文件的后綴不僅有一個(gè),例如,file.tar.gz,命令${var##*.}僅能提取最后一個(gè)后綴,而我想提取tar.gz時(shí)該怎么辦?那么就要用下面所說的${var#*.}命令了。

3、${var#*.}


該命令的作用是去掉變量var從左邊算起的第一個(gè)'.'字符及其左邊的內(nèi)容,返回從左邊算起第一個(gè)'.'(不含該字符)的右邊部分的內(nèi)容。使用例子及結(jié)果如下:

Linux shellh中如何提取文件名和目錄名

從運(yùn)行結(jié)果可以看到,使用該命令,可以提取出文件的多個(gè)后綴。

4、${var%/*}


該命令的使用是去掉變量var從右邊算起的第一個(gè)'/'字符及其右邊的內(nèi)容,返回從右邊算起的第一個(gè)'/'(不含該字符)的左邊的內(nèi)容。使用例子及結(jié)果如下:

Linux shellh中如何提取文件名和目錄名

從運(yùn)行的結(jié)果可以看到,使用該命令,可以提取出我們需要的文件所在的目錄

5、${var%%.*}


該命令的使用是去掉變量var從右邊算起的最后一個(gè)'.'字符及其右邊的內(nèi)容,返回從右邊算起的最后一個(gè)'.'(不含該字符)的左邊的內(nèi)容。使用例子及結(jié)果如下:

Linux shellh中如何提取文件名和目錄名

當(dāng)我們需要建立一個(gè)與文件名相同名字(沒有后綴)的目錄與對(duì)應(yīng)的文件相對(duì)應(yīng)時(shí),就可以使用該命令來進(jìn)行操作。例如,解壓文件的情況就與此類似,我們壓縮文件file.zip時(shí),會(huì)在與file.zip同級(jí)目錄下建立一個(gè)名為file的目錄。

6、${}總結(jié)


其實(shí)${}并不是專門為提取文件名或目錄名的,它的使用是變量的提取和替換等等操作,它可以提取非常多的內(nèi)容,并不一定是上面五個(gè)例子中的'/'或'.'。也就是說,上面的使用方法只是它使用的一個(gè)特例。

看到上面的這些命令,可能會(huì)讓人感到非常難以理解和記憶,其實(shí)不然,它們都是有規(guī)律的。


#:表示從左邊算起第一個(gè)


%:表示從右邊算起第一個(gè)


##:表示從左邊算起最后一個(gè)


%%:表示從右邊算起最后一個(gè)


換句話來說,#總是表示左邊算起,%總是表示右邊算起。

*:表示要?jiǎng)h除的內(nèi)容,對(duì)于#和##的情況,它位于指定的字符(例子中的'/'和'.')的左邊,表于刪除指定字符及其左邊的內(nèi)容;對(duì)于%和%%的情況,它位于指定的字符(例子中的'/'和'.')的右邊,表示刪除指定字符及其右邊的內(nèi)容。這里的'*'的位置不能互換,即不能把*號(hào)放在#或##的右邊,反之亦然。

例如:${var%%x*}表示找出從右邊算起最后一個(gè)字符x,并刪除字符x及其右邊的字符。

看到這里,就可以知道,其實(shí)該命令的用途非常廣泛,上面只是指針文件名和目錄名的命名特性來進(jìn)行提取的一些特例而已。

二、basename和dirname


${}并不是專門為提取文件名和目錄名設(shè)計(jì)的命令,那么basename和dirname命令就是專門為做這一件事而已準(zhǔn)備的了。

1、basename


該命令的作用是從路徑中提取出文件名,使用方法為basename NAME [SUFFIX]。

1)從路徑中提出出文件名(帶后綴),例子如下:

Linux shellh中如何提取文件名和目錄名

2)從上面命令的用法中可以看到,后綴(SUFFIX)是一個(gè)可選項(xiàng)。所以,若只想提取出文件名file,而不帶有后綴,還可以在變量的后面加上后綴名,例子如下:

Linux shellh中如何提取文件名和目錄名

2、dirname


該命令的作用是從路徑中提取出目錄名,使用方法為 dirname NAME


使用例子如下:

Linux shellh中如何提取文件名和目錄名

這樣就提取出了file.txt文件所在的目錄。

注:該命令不僅能提取出普通文件所的目錄,它能提取出任何文件所在的目錄,例如目錄所在的目錄,如下:

Linux shellh中如何提取文件名和目錄名

它提取出了目錄dir2所在的目錄dir1.


關(guān)于“Linux shellh中如何提取文件名和目錄名”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站題目:Linuxshellh中如何提取文件名和目錄名-創(chuàng)新互聯(lián)
文章鏈接:http://muchs.cn/article22/degejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)、域名注冊(cè)營(yíng)銷型網(wǎng)站建設(shè)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站