現在のフォルダには2つのファイルがあります。
SubmitWeb.mSubmit.m
以下はfind
これら2つのファイルを表示しません。
find . -regex .*submit\(Web\)?\.m
しかし、上記の正規表現はemacsバッファでうまく機能します。つまり、.を使用してサンプル文字列のemacsバッファを取得しますisearch-forward-regexp
。
デフォルト値regextype
はですfind
。emacs
find
しかし、ファイル名に開くかっこで扱われるようですが\(
、これはemacs正規表現構文とは異なります。
これはバグですか、それともfind
マニュアルページを誤解していますか?
答え1
問題は\(
当初シェルによって解釈されるようです。
たとえば、次のようなディレクトリがあります。
foo(.test
それから
ls foo\(.text
そして
ls "foo(.text"
どちらも有効です。
したがって、以下が機能します。
find . -regex ".*submit\(Web\)?\.m"
編集する:
一重引用符もここで動作します。
一重引用符と二重引用符の違いについては、次の記事を参照してください。Bashの一重引用符と二重引用符