linux中通配符種類,通配符的使用方式詳解
前言
在使用linux時(shí),往往會(huì)使用Linux built-in命令find、ls等對當(dāng)前的文件或者目錄進(jìn)行查找、顯示、檢索等,當(dāng)不知道全名,只使用其中某個(gè)或某幾個(gè)字符操作時(shí),就可以使用通配符來代替和補(bǔ)全余下對象的字符、字符串。
下文介紹了筆者工作時(shí)用到的關(guān)于通配符的相關(guān)知識和使用方法。
一、通配符、及其分類
- 關(guān)于什么通配符,下網(wǎng)頁很好的介紹了這部分內(nèi)容,不做贅述
| 簡介 | path |
|---|---|
| 百度詞條 | link |
| 筆記 | Linux 通配符 與 正則表達(dá)式 的區(qū)別與詳解:link |
- 通配符知識部分總結(jié)
| 符號 | 釋義 | 說明 |
|---|---|---|
* | 表示零個(gè)或多個(gè)字符 | 下劃線’_‘、小數(shù)點(diǎn)’.‘、空格’ 也是字符,下同 |
? | 一個(gè)字符 | |
[] | 中括號,匹配中括號里面字符中的任意一個(gè) | ([abc]表示可以匹配a、b和c,[abc]也是使用逗號在中括號中,[abc]等同于[a,b,c]) |
^ | 同!, 只能在中括號[]中使用,表示不匹配中括號中的任意字符 | ([!abc]表示不匹配a、b、c) |
{} | 匹配大括號中字符組合中的任何一個(gè) | ({ab,c,de}表示匹配ab、c、de中的任意一項(xiàng)){}屬于通配符么? |
字符:包括字母、數(shù)字、運(yùn)算符號、標(biāo)點(diǎn)符號和其他符號,以及一些功能性符號。來自字符百度詞條 1
- 另外還有,指定匹配數(shù)字、字母(大寫,小寫)、數(shù)字或者字母、點(diǎn)或者下劃線,等:
| 符號 | 釋義 | 說明 |
|---|---|---|
| [:digit:] | 匹配數(shù)字 | 僅匹配一個(gè) |
| [:lower:] | 任意小寫字母 | 僅匹配一個(gè) |
| [:upper:] | 任意大寫字母 | 僅匹配一個(gè) |
| [:alpha:] | 任意字母 | 僅匹配一個(gè) |
| [:alnum:] | 任意一個(gè)字母或數(shù)字 | 僅匹配一個(gè) |
| [:space:] | 一個(gè)空格 | 僅匹配一個(gè) |
| [:punct:] | 表示一個(gè)符號 | 可以是鍵盤上的各種符號,包括但不限于@、#、_、\、(、)、^、&、~、.、?等符號,但是不包括空格、數(shù)字、字母 |
注釋:
1. 以上匹配都是匹配一個(gè);
2.使用使用需要用雙中括號,用這樣的形式
[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]] [[:punct:]]
二、通配符示例、案例
使用的linux的shebang是sh或者bash,不能使用tcsh或者csh
使用的文件有:
# 查看文件 sh-4.2$ ls * 1 1#2 '1(2' '1*2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1^2' 1ls 2 A. A.txt
示例:
sh-4.2$ ls 1 1#2 '1(2' '1*2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1^2' 1ls 2 A. A.txt sh-4.2$ ls * 1 1#2 '1(2' '1*2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1^2' 1ls 2 A. A.txt ## [[:digit:]][[:punct:]]? 表示數(shù)字符號字符 sh-4.2$ ls [[:digit:]][[:punct:]]? 1#2 '1&2' '1(2' '1)2' '1*2' 1.2 '1=2' '1?2' 1@2 '1\2' '1^2' 1_2 1~2
### ?? sh-4.2$ ls ?? 12 A. A_
sh-4.2$ ls 1 1 sh-4.2$ ls 1* 1 '1 2' 1#2 '1&2' '1(2' '1)2' '1*2' 1.2 12 '1=2' '1?2' 1@2 '1\2' '1^2' 1_2 1ls 1~2 sh-4.2$ ls 1? 12
### []內(nèi)中字符的某一個(gè) sh-4.2$ ls [12] 1 2 sh-4.2$ ls [1A] 1 A ### [!1A]不為1和A的一個(gè)字符 sh-4.2$ ls [!1A] 2
### {}字符組合,使用逗號隔開
sh-4.2$ ls {[1A],2}
1 2 A
sh-4.2$ ls {[1A],A_}
1 A A_
sh-4.2$ ls {[[:digit:]],A_}
1 2 A_
sh-4.2$ ls {[[:digit:]][[:digit:]],A_}
12 A_### [[:alnum:]]和[a-z0-9A-Z]同義 sh-4.2$ ls [[:alnum:]] 1 2 A sh-4.2$ ls [[:upper:]] A
### sh-4.2$ ls A.[[:alpha:]][[:alpha:]][[:alpha:]] A.TXT A.txt ### . 點(diǎn)是punct中的一種,但是不包括空格 sh-4.2$ ls A[[:punct:]][[:alpha:]][[:alpha:]][[:alpha:]] A.TXT A.txt
### ?問號可以表示一個(gè)字符 sh-4.2$ ls ???? '1 2' sh-4.2$ ls [[:digit:]][[:punct:]]? 1#2 '1&2' '1(2' '1)2' '1*2' 1.2 '1=2' '1?2' 1@2 '1\2' '1^2' 1_2 1~2 ### 空格是使用[[:space:]]來匹配 sh-4.2$ ls ?[[:space:]][[:space:]]? '1 2'
注釋:
使用[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]] [[:punct:]]時(shí),如果同一個(gè)匹配超過一次,可以重復(fù)使用。
例如: [[:digit:]][[:digit:]]是合法的,但是[[:digit:]]+是不可以的
總結(jié)
該節(jié)是通配符的種類和使用用例的總結(jié),在Linux的使用過程中,掌握通配符往往可以事半功倍。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux CentOS 7.0中java安裝與配置環(huán)境變量的步驟詳解
這篇文章主要給大家分享介紹了關(guān)于Linux CentOS 7.0中java安裝與配置環(huán)境變量的相關(guān)資料,文中通過示例代碼將安裝與配置的過程介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Linux下如何對端口流量進(jìn)行統(tǒng)計(jì)
本篇文章主要介紹了Linux下如何對端口流量進(jìn)行統(tǒng)計(jì),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能實(shí)現(xiàn)
本篇文章給大家分享了Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能的實(shí)現(xiàn)詳解,對此有需要的朋友跟著小編一起學(xué)習(xí)下。2018-03-03
ubuntu中修改grub的啟動(dòng)時(shí)間生成
這篇文章主要介紹了ubuntu中修改grub的啟動(dòng)時(shí)間生成,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

