Использование групп регулярных выражений с find

Использование групп регулярных выражений с find

Имея список файлов, я хочу найти все те, которые заканчиваются на или .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\)'

Связанный контент