2017-12-21 17 views
1

現在のフォルダにfoo.jsという名前のファイルがあります。大文字と小文字を区別しないfindutilsのバグ?

私が検索するために見つける使用

tigerlei::~/work $ ll foo.js 
-rw-rw-r-- 1 tigerlei tigerlei 187 Mar 29 2017 foo.js 

tigerlei::~/work $ find . -regex '.*/foo.*.j[R-T]+' -regextype egrep 
./foo.js 

tigerlei::~/work $ find . -regex '.*/foo.*.j[RST]+' -regextype egrep 

tigerlei::~/work $ find . -iregex '.*/foo.*.j[RST]+' -regextype egrep 
./foo.js 

私のシステムは、Ubuntuの14.04です。私は大文字と小文字を区別するモードを使用します見つけ、-regexを使用する場合

findutilのバージョンは4.4.2

です。しかし:

  • [R-T]は小文字の 'にマッチします、と
  • [RST]は 's' を一致しません。

質問

なぜこれらの成果は、私の検索の結果ですか?

+0

は、照合問題のように見えます'LC_ALL = C'を使用してください。https://unix.stackexchange.com/questions/87745/what-does-lc-all-c-do –

+0

ありがとう、ありがとうございます。 LC_ALL = Cを使用した後、問題は解決されました。 – TigerLei

答えて

0

ブラケット式の範囲を構成する文字がASCIIテーブルと同じ順序になるように、LC_ALL=Cを設定する必要があります。

this threadを参照してください:

あなたは、ユーザーの言語の文字に一致するgrep '[[:alpha:]]'を使用することを意味してLC_ALLを変更しない場合。しかし、ASCII文字のa-zA-Zと一致させる場合は、LC_ALL=C grep '[[:alpha:]]'またはLC_ALL=C grep '[a-zA-Z]'のいずれかが必要です。 [a-z]は、aの後、zの前にソートする文字と一致します(ただし、多くのAPIではそれより複雑です)。他のロケールでは、一般的にそれらが何であるかを知ることはできません。たとえば、一部のロケールでは並べ替えの大文字小文字を無視するため、または[A-Y]を含めることができるように、bashパターンのようなAPIでは[a-z]が使用されます。 (その前z種類あるため)(ほとんどのシステムではen_US.UTF-8を含む)多くのUTF-8ロケールでは、[a-z]は、発音区別符号でaからyにラテン文字が含まれますが、されていないものzの...

関連する問題