2019年4月19日 星期五

延伸檔名匹配 Extended Pattern Matching

使用《檔名匹配 Filename Globbing》會發現,除了 * 以外,剩下的都只能夠匹配一個字元。實用上通常會需要匹配多個字元,這時候使用下面指令開啟extended globbing:
  • shopt -s extglob
這樣就可以使用下面的延伸檔名匹配了:
  • ?(pattern-list):匹配0個或1個pattern
  • *(pattern-list):匹配0個或以上的patterns
  • +(pattern-list):匹配1個或以上的patterns
  • @(pattern-list):只匹配1個pattern
  • !(pattern-list):匹配任何與pattern不一樣的patterns

這邊注意所謂的pattern-list是使用 | 來做分隔,例如說:
  • ls +(ab|def)*+(.jpg|.gif)
等同於:
  • ls ab*.jpg ab*.gif def*.jpg def*.gif

參考資料

  • glob:介紹了除了extglob以外以外還有nullglob,  dotglob, nocaseglob
  • Bash Extended Globbing:介紹了extended globbing如何對應到regular expression
_EOF_

沒有留言:

張貼留言