Есть ли причина, по которой у вас есть скобки?Попробуйте .*txt$
в качестве регулярного выражения (а не этот забавный «символ раздела» в вашем вопросе).
Если вы хотите, чтобы скобки (как в скобках для захвата?), Вам нужно сделать .*\(txt\)$
, потому что по умолчаниюТип регулярного выражения для find
- это стиль Emacs, в котором ()
равны литерал и должны быть экранированы для интерпретации в их смысле регулярного выражения.
Вы также можете сделать find . -regextype posix-extended -regex '.*(txt)$'
отметив -regextype posix-extended
, который изменяет регулярное выражение на расширенное регулярное выражение POSIX, где ()
- это специальные символы (find -regextype asdf
обычно выдаст вам сообщение об ошибке, в котором перечислены все параметры, которые вы можете ввести для regextype
).
Кроме того, в вашем bash-скрипте вы должны заключать $1
в кавычки:
find . -regex "$1"
(Если $1
уже не заключено в кавычки вокруг него, вв каком случае игнорировать предложение).