このfind式で私が何を間違えましたか?
; touch ook ooks
; find . -name 'ook' -or -name 'ooks' -type f
./ook
./ooks
; find . -name 'ook[s]?' -type f
[returns nothing]
; echo $?
0
ベストアンサー1
正規表現とシェル検索パターンを混同しています。
?シェルの単一文字を表します。
?正規表現では、前の文字(または子パターン)がオプションであることを示します。
努力する:
find . -regex '.*ooks?' -type f
検索マニュアルページから:
-正規表現パターン ファイル名が正規表現パターンと一致します。これはゲームです 検索する代わりにフルパスを使用してください。たとえば、ファイルを一致させるには 「./fubar3」という名前の正規表現「.*bar」を使用できます。または '.*b.*3' ですが、'f.*r3' ではありません。正規表現の理解 find のデフォルトは Emacs 正規表現ですが、動作します。 これを変更するには、-regextype オプションを使用します。