
下のglobで何が間違っているのでしょうか?私の読み方によると、動作するはずですマニュアル。
「?」 (括弧で囲まれていない) は任意の 1 文字に一致します。
$ touch file.txt file.text
$ ls file.*
file.text file.txt
$ ls file.te?xt
ls: cannot access 'file.te?xt': No such file or directory
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
答え1
は?
、(正規表現のように) 1 つの文字と一致します.
。パターンに一致するファイルがないfile.te?xt
ため、パターンは展開されません。
正規表現のように機能し、「前の表現の 0 個または 1 個」を意味すると予想したかもしれません。残念ながら、 にはそのようなワイルドカードはありませんbash
。
...extglob
シェル オプションを有効にしない限り:
shopt -s extglob
すると、パターンは?(list)
内のパターンの 0 個または 1 個と一致しますlist
。
$ shopt -s extglob
$ ls file.t?(e)xt
file.text file.txt