
Dada uma lista de arquivos, quero encontrar todos aqueles que terminam com .pem
ou .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\)'