好用的shell通配符

前言

我們?cè)谑褂?shell 執(zhí)行任務(wù)的過程中,常常會(huì)遇到需要處理一批數(shù)據(jù)的情況煮岁,如果我們一個(gè)一個(gè)的傳遞參數(shù)就會(huì)非常的麻煩,這時(shí)候就需要用到 shell 的通配符功能了。例如rm *.txt可以刪除當(dāng)前目錄下所有的 txt 文件匠楚。

功能

shell 通配符起到的是拓展參數(shù)的功能,注意 shell 通配符是由 shell 處理的厂财,而不是用到參數(shù)的命令或者語句處理的芋簿。

例如對(duì)于 rm *.txt,shell 在參數(shù)遇到通配符的時(shí)候璃饱,會(huì)把這個(gè)通配符當(dāng)做路徑或者文件的匹配模式去磁盤上搜索所有的匹配項(xiàng)与斤。

如果存在匹配,則把所有的匹配項(xiàng)替換到參數(shù)去荚恶,例如上面的命令最終的形式可能是 rm a.txt b.txt撩穿,rm命令拿到的是實(shí)際的文件列表,而不是*.txt谒撼。

如果不存在匹配或者無法識(shí)別該模式食寡,則shell會(huì)將該通配符作為一個(gè)普通字符傳遞給命令,然后再由命令去處理廓潜。例如如果我們目錄下沒有任何 txt 文件抵皱,執(zhí)行上面的命令就會(huì)報(bào)錯(cuò):no matches found: *.txt

跨目錄匹配
通配符只能匹配單層目錄,如果要跨目錄匹配辩蛋,則要這樣子寫:

rm */*.txt

注意呻畸,上面的寫法只能匹配一級(jí)子目錄下的 txt 文件,沒有辦法匹配當(dāng)前目錄以及二級(jí)子目錄下的文件

如果要匹配當(dāng)前目錄和一級(jí)子目錄下的txt文件堪澎,則要用到多個(gè)通配符組合擂错,例如如下命令

ls *{\/*,}.txt

注意,以上命令在當(dāng)前目錄或者一級(jí)目錄之一沒有txt文件的時(shí)候樱蛤,也會(huì)報(bào)錯(cuò)钮呀。

通配符

shell 通配符看起來很像正則表達(dá)式,然而并不是正則表達(dá)式昨凡,它的功能比正則表達(dá)式要弱爽醋,只支持下面幾種通配符形式。

*

匹配 0 或多個(gè)字符

?

匹配任意一個(gè)字符

[]

匹配 []中的任意單一字符便脊,例如[abc]匹配a蚂四、b、c中的任何一個(gè)字符。[]支持范圍匹配遂赠,例如 [a-z]匹配所有小寫字母久妆。

{,}

匹配{}中被,分隔的任意一個(gè)子字符串。例如{AA,BB,CC}.txt匹配到 AA.txt跷睦、BB.txtCC.txt筷弦,{}也支持范圍匹配,例如{A..Z}匹配所有大寫字母

{}和其他通配符不同的地方在于抑诸,即使沒有匹配到數(shù)據(jù)烂琴,{}依然會(huì)展開。例如

# 如果我們目錄下沒有文件A蜕乡,B奸绷,下面的命令會(huì)報(bào)錯(cuò):no matches found: [AB]
echo [A-B]
# 下面的命令則會(huì)輸出:A B
echo {A-B}

{}支持嵌套,因此可以組合成復(fù)雜的模式层玲。例如

echo {a{a..c},b{b..c}}
#輸出aa ab ac bb bc

[!]和[^]

匹配除了 [] 中的其他所有字符号醉,也即不匹配[]中的所有字符。


Enjoy it !

如果覺得文章對(duì)你有用称簿,可以贊助我喝杯咖啡~

版權(quán)聲明

轉(zhuǎn)載請(qǐng)注明作者和文章出處
作者: X先生
http://www.reibang.com/p/0673af7356a5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扣癣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子憨降,更是在濱河造成了極大的恐慌,老刑警劉巖该酗,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件授药,死亡現(xiàn)場離奇詭異,居然都是意外死亡呜魄,警方通過查閱死者的電腦和手機(jī)悔叽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爵嗅,“玉大人娇澎,你說我怎么就攤上這事《蒙梗” “怎么了趟庄?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伪很。 經(jīng)常有香客問我戚啥,道長,這世上最難降的妖魔是什么锉试? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任猫十,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拖云。我一直安慰自己贷笛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布宙项。 她就那樣靜靜地躺著昨忆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杉允。 梳的紋絲不亂的頭發(fā)上邑贴,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音叔磷,去河邊找鬼拢驾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛改基,可吹牛的內(nèi)容都是我干的繁疤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秕狰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼稠腊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸣哀,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤架忌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后我衬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叹放,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年挠羔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了井仰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡破加,死狀恐怖俱恶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情范舀,我是刑警寧澤合是,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站尿背,受9級(jí)特大地震影響端仰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜田藐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一荔烧、第九天 我趴在偏房一處隱蔽的房頂上張望吱七。 院中可真熱鬧,春花似錦鹤竭、人聲如沸踊餐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吝岭。三九已至,卻和暖如春吧寺,著一層夾襖步出監(jiān)牢的瞬間窜管,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工稚机, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幕帆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓赖条,卻偏偏與公主長得像失乾,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纬乍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355