[2-57]
なる文字セットである2
、3
、4
、5
そして7
、そこのzshや他のすべてのワイルドカードや正規表現構文インチ globパターン*[2-57]
は、最後の文字がこれらの5桁のいずれかであるすべてのファイル名と一致します。
[m,n]
glob修飾子の構文を誤って覚えていると思います。グロブ修飾子は、常にパターンの最後に括弧で囲み、範囲区切り記号はコンマです。パターン*([2,57])
は、2番目、3番目、…、57番目の一致に展開されます。デフォルトの展開順序は辞書式です(numeric_glob_sort
オプションが設定されている場合、数値を数値順に並べ替える特別な魔法があります)。o
またはO
glob修飾子で制御できます(たとえば*(om[2,57])
、最新の1つのファイルを除く最新の57のファイルに一致させるため)。
for x in /foo/bar/*([2,57]); do print $x; done
あなたが求めたものではなく、将来の読者に関連し、おそらく有用です:ファイルが存在するかどうかにかかわらずファイル2から57を列挙したい場合は、範囲括弧表現を使用できます。この機能はbashとkshにもあります。
echo hello{2..57}
また、名前に2〜57の数字が含まれるファイルと一致させたい場合は、パターンを使用できます<2-57>
。これはzshに固有です。
$ ls
file1 file2 file3 file57 file58
$ echo file<2-57>
file2 file3 file57
のようなパターン*<2-57>
は、*
数字と一致する可能性があるため、期待どおりに動作しない可能性が高いことに注意してください。例えば、file58
一致する*<2-57>
と、file5
一致する*
部分と8
一致する<2-57>
部分。このパターン*[^0-9]<2-57>
はこの問題を回避します。