knob_A.png
やknob_a.png
のようなファイルをいくつか作成しましたが、Windowsのチームメートは、これが彼女のアプリに問題を引き起こしたと言いました。 knob_W.png
ではなくknob_a.png
と呼ぶことにしました。次に、共有サーバーまでrsyncを実行しました。物事をきれいにするために私はそれからしました
rm knob_[a-d]*.png
knob_A.png
も削除しました。これはフットボールのバットとしては間違っています。
shopt -s nocaseglob
もshopt -u nocaseglob
も、希望どおりに動作しません。
昔のようにグロブで大文字と小文字を区別するようにbashに指示するにはどうすればよいですか?
ここでは、Bashで大文字と小文字が区別されます。問題は、範囲内の文字の並べ替え順序にあります。 Bashマニュアルから(info bash
):
範囲式の文字の並べ替え順序は、現在のロケールと、設定されている場合は「LC_COLLATE」シェル変数の値によって決まります。
たとえば、デフォルトのCロケールでは、「[a-dx-z]」は「[abcdxyz]」と同等です。多くのロケールは文字を辞書順にソートします。これらのロケールでは、「[a-dx-z]」は通常「[abcdxyz]」と同等ではありません。たとえば、「[aBbCcDdxXyYz]」と同等である可能性があります。ブラケット式の範囲の従来の解釈を取得するには、「LC_COLLATE」または「LC_ALL」環境変数を値「C」に設定することにより、Cロケールの使用を強制できます。
やってみてください
export LC_COLLATE=C
Bashには、パターンマッチを保持するためのシェルオプションがあるため、展開中に大文字と小文字が無視されません。スクリプトにshopt -s globasciiranges
を追加して大文字と小文字を区別する一致を有効にし、shopt -u globasciiranges
を使用してオフにすることができます。 Bashリファレンス-Shopt Builtin を参照してください。
または、他の回答に記載されているLC_COLLATE=C
を使用することもできますが、export LC_COLLATE
を使用して環境にエクスポートされていることを確認してください。