検索で正規表現グループを使用する

検索で正規表現グループを使用する

.pemファイルのリストが与えられ、またはで終わるファイルをすべて検索します.cer。このコマンドは PEM を検索するために機能します。

find . -d 1 -regex ".*\.pem"

しかし、このコマンドでは何も見つかりません:

find . -d 1 -regex ".*\.(pem|cer)"

この構文は、BBedit パターン プレイグラウンドで機能します。検索で正規表現グループを使用する方法はありますか?

答え1

私はこれに正規表現を使用しません。代わりに以下を使用します:

find . -name "*.pem" -o -name '*.cer'

正規表現の解析には CPU 時間のコストがかかるため、さらに高速になる可能性があります (ただし、ここでは秒単位の話です)。

編集:

Hannu さんのコメントを見ると、(最初に試したコマンドに基づいて) サブディレクトリをチェックしたくないのではないかと思います。その場合は次のようになります。

find . -maxdepth 1 -name "*.pem" -o -name '*.cer'

答え2

このコマンドでは何も見つかりません:

find . -d 1 -regex ".*\.(pem|cer)"

次のように、の'代わりに"と をエスケープして使用する必要があります。()

find . -d 1 -regex '.*\.\(pem|cer\)'

関連情報