この構文
--exclude-dir={dir1,dir2}
これではなく、シェル(Bashなど)によって次のように展開さgrep
れます。
--exclude-dir=dir1 --exclude-dir=dir2
引用すると、シェルがそれを拡張するのを防ぐため、これは機能しません。
--exclude-dir='{dir1,dir2}' <-- this won't work
で使用される--exclude-dir
パターンは、--exclude
オプションのマニュアルページで説明されているパターンと同じ種類です。
--exclude=GLOB
Skip files whose base name matches GLOB (using wildcard matching).
A file-name glob can use *, ?, and [...] as wildcards, and \ to
quote a wildcard or backslash character literally.
シェルは通常、そのようなパターン自体を拡張しようとするため、これを回避するには、引用する必要があります。
--exclude-dir='dir?'
次のように、中括弧と引用符で囲まれた除外パターンを一緒に使用できます。
--exclude-dir={'dir?','dir??'}
パターンは複数のパスセグメントにまたがることができます。
--exclude-dir='some*/?lse'
これはのようなディレクトリを除外しtopdir/something/else
ます。