Usando grupos regex com find

Usando grupos regex com find

Dada uma lista de arquivos, quero encontrar todos aqueles que terminam com .pemou .cer. Este comando funciona para localizar os PEMs.

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

Mas este comando não encontra nada:

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

Esta sintaxe funciona no playground do padrão BBedit. Existe alguma maneira de usar grupos regex com find?

Responder1

Eu nem usaria regexps para isso, em vez disso usaria:

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

Pode até ser mais rápido (embora estejamos falando de fração de segundos aqui) porque a análise de regexps é mais cara em tempo de CPU.

EDITAR:

Agora que vejo o comentário de Hannu, percebo (com base no comando que você tentou originalmente) que talvez você não queira verificar os subdiretórios. Se for esse o caso, então se torna:

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

Responder2

Este comando não encontra nada:

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

Você precisa usar 'em vez de "e escapar (e )da seguinte forma:

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

informação relacionada