
Dada una lista de archivos, quiero encontrar todos los que terminan con .pem
o .cer
. Este comando funciona para encontrar los PEM.
find . -d 1 -regex ".*\.pem"
Pero este comando no encuentra nada:
find . -d 1 -regex ".*\.(pem|cer)"
Esta sintaxis funciona en el patio de juegos de patrones de BBedit. ¿Hay alguna forma de utilizar grupos de expresiones regulares con buscar?
Respuesta1
Ni siquiera usaría expresiones regulares para esto, en su lugar usaría:
find . -name "*.pem" -o -name '*.cer'
Incluso podría ser más rápido (aunque aquí estamos hablando de fracciones de segundos) porque analizar expresiones regulares es más costoso en tiempo de CPU.
EDITAR:
Ahora que veo el comentario de Hannu, noto (según el comando que probaste originalmente) que tal vez no quieras verificar los subdirectorios. Si este es el caso entonces se convierte en:
find . -maxdepth 1 -name "*.pem" -o -name '*.cer'
Respuesta2
Este comando no encuentra nada:
find . -d 1 -regex ".*\.(pem|cer)"
Debe usar '
en lugar de "
y escapar (
y )
de la siguiente manera:
find . -d 1 -regex '.*\.\(pem|cer\)'