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