2015-09-22 3 views
2

Когда я команда типаКак передать регулярное выражение команде find в Linux?

find ./ -iname "*.pdf" или find ./ -iname \*.pdf

все файлы PDF под текущим деревом папок перечислены. Точно так же,

find ./ -iname "*.doc"

перечислены все файлы Doc.

Мой вопрос заключается в том, как перечислить оба типа файлов? Я попытался commad как

find ./ -iname "*.{pdf,doc}"

Но это не работает.

+0

Вы Ошибочно расширение скобка для типа шаблона шара. Это совершенно другой тип расширения, специфичный для 'bash' и некоторых других оболочек, которые не распознаются примитивом' -iname'. – chepner

ответ

2

Использование Glob вы можете использовать -o (OR) `:

find . \(-iname "*.pdf" -o -iname "*.doc" \) 

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

find . -regextype posix-extended -regex '.*\.(pdf|doc)$' 

На OSX find использования:

find -E . -regex '.*\.(pdf|doc)$'