find ユーティリティは角かっこ記号を認識しません。

find ユーティリティは角かっこ記号を認識しません。

現在のフォルダには2つのファイルがあります。


SubmitWeb.mSubmit.m

以下はfindこれら2つのファイルを表示しません。

find . -regex .*submit\(Web\)?\.m

しかし、上記の正規表現はemacsバッファでうまく機能します。つまり、.を使用してサンプル文字列のemacsバッファを取得しますisearch-forward-regexp

デフォルト値regextypeはですfindemacs

findしかし、ファイル名に開くかっこで扱われるようですが\(、これはemacs正規表現構文とは異なります。

これはバグですか、それともfindマニュアルページを誤解していますか?

答え1

問題は\(当初シェルによって解釈されるようです。

たとえば、次のようなディレクトリがあります。

foo(.test

それから

ls foo\(.text

そして

ls "foo(.text"

どちらも有効です。

したがって、以下が機能します。

find . -regex ".*submit\(Web\)?\.m"

編集する:

一重引用符もここで動作します。

一重引用符と二重引用符の違いについては、次の記事を参照してください。Bashの一重引用符と二重引用符

関連情報