ワイルドカードはzshでは失敗しますが、bashでは機能します。

ワイルドカードはzshでは失敗しますが、bashでは機能します。

zshに移植したいbashにエイリアスがあります。エイリアス自体かもしれないと思っていましたが、今はただワイルドカードのようです。

grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data

zshからこれらのファイル拡張子とディレクトリを除外する正しい方法は何ですか?

答え1

存在する:

grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data

zshとでは最初に拡張され、次に引用符がないbashため、それぞれはワイルドカードを実行するパターンとして扱われます。--exclude=\*.{log,class,fuegoclass,dat}*--exclude=\*.log* --exclude=\*.class* --exclude=\*.fuegoclass* --exclude=\*.dat**

たとえば、--exclude=\*.log*現在のディレクトリの名前を--exclude=*.log

一致しない glob がある場合、zshコマンドは中断されます。では、bash球はそれ自体で拡張されます。

ここではワイルドカードは必要ないので、すべてのワイルドカード文字を引用する必要があります(およびエラーを指摘するだけですzsh)。bashzsh

grep -irl --exclude=\*.{log,class,fuegoclass,dat}\* --exclude-dir={build,system,lib} data

関連情報