shell萬用字元匹配

2021-09-28 04:38:10 字數 1379 閱讀 3734

當輸入包含特殊字元(元字元)的部分檔名時,shell可以生成與已有檔名匹配的檔名。這些字元稱為萬用字元(wildcard)就像撲克牌中的王牌一樣無所不能。包含特殊字元的檔名稱為模糊檔案引用(ambiguous file reference),因為它們不引用任何乙個特定檔案。對這些檔名操作的過程稱為擴充套件路徑名(path expansion)或者通配(globbing)。

1、特殊字元「?」

問號(?)是shell生成檔名的特殊字元,它與已有檔名中的某個字元匹配。

示例:使用ls

$  ls

mem   memo12   memo9    memomax    newmemo5   memo   memo5    memoa    memos

$  ls memo?

memo9  memo5  memoa  memos

問號也可以放在模糊檔案引用的中間:

$  ls mem?max

memomax

2、特殊字元「*」

星號(*)的功能與問號相似,不同的地方在於,星號後面可以與檔名中的任意多個(包括0個)字元匹配。

$  ls

amemo  memoalx.0612  memosally  memosam  user.memo  memo  memoa

memo.0620  sallymemo  memalx  memorandum  memoalx.keep  typescript

$  ls memo*

memoalx.0612  memosally  memosam  memo  memoa  memo.0620  memorandum  memoalx.keep

$  ls *mo

amemo  user.memo  memo  sallymemo

$  ls *sam*

memosam

3、特殊字元"[ ]"

用一對方括號將乙個字元列表括起來使得shell與包含每乙個字元的檔名進行匹配。「memo?」可匹配memo後跟任何乙個字元的檔名,而方括號更嚴格些,memo[17a]僅與memo1、memo7和memoa匹配。

在字元類定義中,將連字元放在方括號中可以定義乙個字元範圍。如[6-9]代表[6789],[a-z]代表所有小寫英文本母。[a-za-z]代表所有英文本母。

左方括號後直接跟感嘆號(!)或插入符號(^)也可以定義字符集,該類與任何不在方括號內的字元匹配。

[^tsq]*表示不以t、s和q開頭的檔名匹配。

$  ls

aa  ab  ac  ad  ba  bb  bd  be  cc  dd

$  ls  *[^ab]

ac  ad  bd  be  cc  dd

$  ls [^b-d]*

aa  ab  ac  ad

萬用字元匹配

implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters including the empty sequence ...

萬用字元匹配

給定乙個輸入字串s 和模式p,p包含萬用字元?與星號 其中輸入s包含小寫字母a z,p包含小寫字母a z與?和星號,可以匹配任一字元,星號 可以匹配多個字元,包括空字元。給定輸入s與p,判斷s 與 p是否完全匹配。example 1 input s aa p a output false expla...

萬用字元匹配

1.遇到s和p都是 則直接返回true 2.判斷邊界條件如果s串已經遍歷完畢,則判斷p串是否便利完畢,如果p串長度大於s串,則判斷大於部分是否都是 如果是則返回true,否則返回false 3.判斷邊界條件如果p串已經便利完畢,則判斷s串是否便利完畢,是則返回true,否則返回false 4.判斷字...