1

パスが ./bar2.txt で、bar2.txt の内容が

./bar2.txt

の出力

grep "\bbar2\b" *

bar2.txt:./bar2.txt

予想通り、どこで

find . -regextype posix-extended -regex "\bbar2\b"

何も見つかりません。

正規表現を次のように変更する必要があることはわかっています

".*/bar2.*" 

find はフルパスを探すからです。では、これは find が単語境界を指定する \b を無視するということですか?

前もって感謝します。

4

2 に答える 2

1

grepfindさまざまな正規表現エンジンを使用します。特に、POSIX正規表現(をfind使用)には単語の境界として「\ b」が含まれていないため、「b」と同じです。たとえば、OSXでは、これらは同じ結果になります。

find . -regex '.*bar2.txt' -print

find . -regex '.*\bar2.txt' -print

マンページを再確認して、それ-regexがあなたの考えどおりに機能していることを確認してください。私findの場合、正規表現はファイル名全体と一致する必要があります。たとえば、これではファイルが見つかりません。

find . -regex 'bar' -print

しかし、これはします:

find . -regex '.*bar.*' -print

于 2013-02-07T01:29:43.977 に答える
0

しかし、私が興味を持っているのは、\b単語の境界を指定するものを無視する理由です。

私の理解\bでは、これはPerlの正規表現の一部であり、Perlの正規表現をサポートしていないため、ではfind使用できません。findgrep

于 2013-02-06T05:42:13.507 に答える