
Имея список файлов, я хочу найти все те, которые заканчиваются на или .pem
. .cer
Эта команда работает для поиска PEM.
find . -d 1 -regex ".*\.pem"
Но эта команда ничего не находит:
find . -d 1 -regex ".*\.(pem|cer)"
Этот синтаксис работает в BBedit pattern playground. Есть ли способ использовать группы регулярных выражений с find?
решение1
Я бы даже не использовал регулярные выражения для этого, вместо этого я бы использовал:
find . -name "*.pem" -o -name '*.cer'
Это может быть даже быстрее (хотя здесь речь идет о долях секунды), поскольку разбор регулярных выражений требует больших ресурсов процессора.
РЕДАКТИРОВАТЬ:
Теперь, когда я вижу комментарий Ханну, я замечаю (основываясь на команде, которую вы изначально пробовали), что, возможно, вы не хотите проверять подкаталоги. Если это так, то это становится:
find . -maxdepth 1 -name "*.pem" -o -name '*.cer'
решение2
Эта команда ничего не находит:
find . -d 1 -regex ".*\.(pem|cer)"
Вам нужно использовать '
вместо "
и escape (
и )
следующим образом:
find . -d 1 -regex '.*\.\(pem|cer\)'