Clarify double-star wildcard matching behavior in pattern documentation

This commit is contained in:
Andrea Mazzoleni 2026-08-26 14:38:06 +02:00
parent 76e8ae2498
commit f9b31db1a7
42 changed files with 561 additions and 525 deletions

View file

@ -1848,17 +1848,18 @@ ZFSでは標準の \`.zfs/snapshot/\` が使用されます。
単一のパスコンポーネント内での一致に適しています。これは、シェルの
グロブでおなじみの標準的なワイルドカードの動作です。
.PP
ダブルアスタリスク \`**\` はより強力で、ディレクトリ区切り文字を含む
任意の文字列に一致します。これにより、パターンが複数のディレクトリレベルを
またいで一致できるようになります。\`**\` がパターン内に直接埋め込まれている場合、
周囲のリテラルテキストの間にあるスラッシュを含む0文字以上の文字に一致します。
ダブルアスタリスクのワイルドカード \`**\` は、ディレクトリ区切り文字に隣接
している場合(スラッシュの前または後にある場合)にのみ、ディレクトリ区切り
文字をまたいで一致します。この形式では、複数のディレクトリレベルにわたって
0個以上の文字に一致します。例えば、\`foo/**/bar\` は \`foo/bar\`、\`foo/a/bar\`、
および \`foo/a/b/bar\` に一致し、\`**/build\` は \`build\` および \`foo/bar/build\` に
一致し、\`src/**.js\` は \`src/main.js\` および \`src/ui/components/main.js\` に一致します。
単独の形式 \`/**/\` は完全なパターンとして受け入れられません。
.PP
\`**\` の最も重要な使い方は、特別な形式である \`/**/\` です。これは
0個以上の完全なディレクトリレベルに一致し、正確なパス構造を知らなくても、
ディレクトリツリー内の任意の深さにあるファイルと一致させることができます。
例えば、パターン \`src/**/main.js\` は \`src/main.js\`(ディレクトリを0個スキップ)、
\`src/ui/main.js\`(1個スキップ)、\`src/ui/components/main.js\`(2個スキップ)
に一致します。
\`**\` がスラッシュに隣接していない場合、\`*\` と同様に動作し、ディレクトリ区切り
文字には一致しません。例えば、\`**.jpg\` はカレントディレクトリ内の \`photo.jpg\` に
一致しますが、\`dir/photo.jpg\` には一致しません。その目的には \`**/*.jpg\` を
使用してください。
.PP
角括弧 \`[]\` を使用した文字クラスは、指定されたセットまたは範囲の
任意の1文字に一致します。他の単一文字パターンと同様に、
@ -1867,7 +1868,8 @@ ZFSでは標準の \`.zfs/snapshot/\` が使用されます。
.PP
覚えておくべき根本的な違いは、\`*\`、\`?\`、および文字クラスはすべて
ディレクトリの境界を尊重し、単一のパスコンポーネント内でのみ一致するのに対し、
\`**\` はディレクトリ区切り文字をまたいで一致できる唯一のパターンであるということです。
\`**\` はスラッシュに隣接している場合にのみディレクトリ区切り文字を
またいで一致できるということです。
.PP
4つの異なる種類のパターンがあります。
.TP