Linux shell 提取文件名

很多時候在使用Linux的shell時瞄摊,我們都需要對文件名或目錄名進(jìn)行處理箱季,通常的操作是由路徑中提取出文件名赂鲤,從路徑中提取出目錄名噪径,提取文件后綴名等等。例如数初,從路徑/dir1/dir2/file.txt中提取也文件名file.txt找爱,提取出目錄/dir1/dir2,提取出文件后綴txt等泡孩。

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

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

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

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

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

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

如果文件的后綴不僅有一個糜颠,例如汹族,file.tar.gz艺玲,命令{var##*.}僅能提取最后一個后綴,而我想提取tar.gz時該怎么辦鞠抑?那么就要用下面所說的{var#*.}命令了饭聚。

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

從運行結(jié)果可以看到,使用該命令箕速,可以提取出文件的多個后綴酪碘。

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

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

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

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

6卷玉、{}總結(jié) 其實{}并不是專門為提取文件名或目錄名的,它的使用是變量的提取和替換等等操作喷市,它可以提取非常多的內(nèi)容相种,并不一定是上面五個例子中的'/'或'.'。也就是說东抹,上面的使用方法只是它使用的一個特例蚂子。

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

:表示從左邊算起第一個

%:表示從右邊算起第一個

:表示從左邊算起最后一個

%%:表示從右邊算起最后一個
換句話來說表锻,#總是表示左邊算起匾灶,%總是表示右邊算起。

*:表示要刪除的內(nèi)容哎媚,對于#和##的情況喇伯,它位于指定的字符(例子中的'/'和'.')的左邊,表于刪除指定字符及其左邊的內(nèi)容拨与;對于%和%%的情況稻据,它位于指定的字符(例子中的'/'和'.')的右邊,表示刪除指定字符及其右邊的內(nèi)容买喧。這里的''的位置不能互換捻悯,即不能把號放在#或##的右邊,反之亦然淤毛。

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

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

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

1兽泣、basename
該命令的作用是從路徑中提取出文件名绎橘,使用方法為basename NAME [SUFFIX]胁孙。

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

2)從上面命令的用法中可以看到称鳞,后綴(SUFFIX)是一個可選項涮较。所以,若只想提取出文件名file冈止,而不帶有后綴狂票,還可以在變量的后面加上后綴名,例子如下:

2熙暴、dirname
該命令的作用是從路徑中提取出目錄名闺属,使用方法為 dirname NAME
使用例子如下:

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

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

它提取出了目錄dir2所在的目錄dir1.
————————————————
版權(quán)聲明:本文為CSDN博主「ljianhui」的原創(chuàng)文章俱箱,遵循CC 4.0 BY-SA版權(quán)協(xié)議国瓮,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ljianhui/java/article/details/43128465

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市乃摹,隨后出現(xiàn)的幾起案子禁漓,更是在濱河造成了極大的恐慌,老刑警劉巖孵睬,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件播歼,死亡現(xiàn)場離奇詭異,居然都是意外死亡掰读,警方通過查閱死者的電腦和手機(jī)荚恶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磷支,“玉大人谒撼,你說我怎么就攤上這事∥肀罚” “怎么了廓潜?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長善榛。 經(jīng)常有香客問我辩蛋,道長,這世上最難降的妖魔是什么移盆? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任悼院,我火速辦了婚禮,結(jié)果婚禮上咒循,老公的妹妹穿的比我還像新娘据途。我一直安慰自己,他們只是感情好叙甸,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布颖医。 她就那樣靜靜地躺著,像睡著了一般裆蒸。 火紅的嫁衣襯著肌膚如雪熔萧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天僚祷,我揣著相機(jī)與錄音佛致,去河邊找鬼。 笑死辙谜,一個胖子當(dāng)著我的面吹牛俺榆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筷弦,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼肋演,長吁一口氣:“原來是場噩夢啊……” “哼抑诸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爹殊,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蜕乡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梗夸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體层玲,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年反症,在試婚紗的時候發(fā)現(xiàn)自己被綠了辛块。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡铅碍,死狀恐怖润绵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胞谈,我是刑警寧澤尘盼,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站烦绳,受9級特大地震影響卿捎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜径密,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一午阵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧享扔,春花似錦底桂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锉试,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間览濒,已是汗流浹背呆盖。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贷笛,地道東北人应又。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像乏苦,于是被迫代替她去往敵國和親株扛。 傳聞我的和親對象是個殘疾皇子尤筐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容