2016-12-19 5 views
0

findコマンドを正規表現で使用して、6桁の整数を含むファイル名と一致させようとしています。私が代わりにこれを行う場合正規表現:6桁の整数でファイル名を一致させようとしています

./flmyptd2root-Se82.2nubb-000005.root                        
./flmyptd2root-Se82.2nubb-000001.root 
./flmyptd2root-Se82.2nubb-000004.root 
./flmyptd2root-Se82.2nubb-000000.root 
./flmyptd2root-Se82.2nubb-000003.root 
./flmyptd2root-Se82.2nubb-100000.root 
./flmyptd2root-Se82.2nubb-000002.root 

それは動作します:

EVENT_GENERATOR="Se82.2nubb" 
find ./ -type f -regex "^./flmyptd2root-$EVENT_GENERATOR-[0-9]{6}.root$" 

そして、ここでファイル名は、私が一致することを期待している:

この

は私が実行しているコマンドです

find ./ -type f -regex "^./flmyptd2root-$EVENT_GENERATOR-[0-9]*.root$" 

しかし、最初の式がなぜそうでないのかわかりません。 (*[0-9]を何度も繰り返すので、すべての整数を選択すると思います)

6桁の整数だけを選択するにはどうすればよいですか?

+1

範囲指定子はPOSIX BREでエスケープする必要があるためです。 –

+0

* "...これはすべての可能な整数を選択すると思いますか?" *:数字をまったく含まない –

答えて

1

あなたは、この発見コマンドを使用することができます。

find . -regextype posix-extended -type f -regex "^\./flmyptd2root-$EVENT_GENERATOR-[0-9]{6}\.root$" 

find{}を文字通りに解釈され、デフォルトでBREを使用して、上記で示唆したように正しく範囲の数量詞{...}を解釈するために-regextype posix-extendedを使用しています。

+0

BREとは何ですか?さまざまな正規表現型の違いは何ですか? – user3728501

+1

[POSIX BREとPOSIX拡張の違いについてはこの文書をチェック](http://www.regular-expressions.info/posix.html) – anubhava

+0

私はそのページを読みましたが、残念ながら理解できませんでした... – user3728501

関連する問題