web-dev-qa-db-ja.com

正規表現の数量詞を使用してコマンドを検索します。 {1,2}

1から99までの数字で終わるすべてのファイルを検索し、他のファイルはすべて除外する検索コマンド文字列を作成しようとしています。

例えばmyfile1 myfile99を検索したいmyfile456は検索せず、-myfilebackupは検索しない

私が考えている正規表現はmyfile[1-9]{1,2}しかし、これをfindで動作させることはできません。

find . -regex '.*myfile[0-9]{1,2}' OR find . -iname 'myfile[0-9]{1,2}'

私が見ることができるものから、それは{1,2}機能していない部分。

(ところで-name -regex交換可能ですか?)

助けてくれてありがとう。

17
Lukas88

あなたは試すことができます

find . -regex '.*myfile[0-9][0-9]?'

または

find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)
12
l0b0

GNU findがある場合、別の正規表現タイプを使用できます:

find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'

GNU findneuteredEmacs正規表現構文 をデフォルトで使用します-Emacsは\{from,to\}構文ですが、少なくともGNU findはサポートしていません。

奇妙なことに、リファレンスマニュアルにはsed正規表現構文に関するセクションが含まれていないため、サポートされている部分を知っているのはだれですか。

18
l0b0