文字クラス
[]
globの有効な文字クラスは、POSIX標準で定義されています。
アルナムアルファベット空白cntrl数字グラフ下の印刷区画スペース上の単語xdigit
[]
内に複数の文字クラスまたは範囲を使用することができます(例:
$ echo a[a-z[:blank:]0-9]*
a
で始まり、小文字または空白または数字のあとに続くファイルに一致します。
こと、しかし、心に留めておくべきである[]
グロブのみを完全に否定し、それのない部分だけすることができます。否定文字は 、開始に続く最初の文字でなければなりません [
例えば、この式は、 a
始まらないすべてのファイルと一致します
$ echo [^a]*
以下は、数字または^
で始まるすべてのファイルに一致します。
$ echo [[:alpha:]^a]*
^
がリテラル^
として解釈されるため、 a
以外の文字で始まるファイルやフォルダとは一致しません 。
グロブ文字をエスケープする
ファイルまたはフォルダには、名前の一部としてグロブ文字が含まれている可能性があります。この場合、globはリテラルマッチのために先行する\
でエスケープすることができます。別のアプローチは、ファイルのアドレス指定にダブル""
またはシングル''
引用符を使用することです。 Bashは""
または''
囲まれたグロブを処理しません。
正規表現との違い
グロブと正規表現の最も大きな違いは、有効な正規表現には修飾子と量指定子が必要であることです。修飾子は一致するものを識別し、量子は修飾子に一致する頻度を示します。同等の正規表現*
グロブがある.*
場所.
任意の文字を表し、 *
は前の文字の0以上の一致を表します。 ?
の同等の正規表現?
globは.{1}
です。これまでのように、修飾子.
任意の文字に一致し、 {1}
は直前の修飾子と一度だけ一致することを示します。これは、と混同してはいけません?
RegExで1回または1回一致します。 []
globは、RegExで同じように使用することができます。ただし、必須の数量子が続く場合に限ります。
等価正規表現
グローブ | 正規表現 |
---|---|
* | .* |
? | . |
[] | [] |