У меня есть пара файлов с именем
(a).1
(a).2
...
(a).100
Поскольку многим инструментам обработки не очень нравится ( и ) имя файла, я подумал, что лучше переименовать их в другое имя. Я гуглил для переименования файлов и нашел замечательный инструмент rename где я могу кормить регулярное выражение. Хорошо, давайте попробуем это:
$ rename -v s/\(a\)/b/ \(a\).*
(a).1 renamed as (b).1
(a).2 renamed as (b).2
(a).3 renamed as (b).3
Хм, не то, что я ожидал. После небольшого поиска я обнаружил, что \( \) является оператором группировки. Какой вид имеет смысл, поскольку я не избежал ( ) в команде.
Я решил проблему с переименованием, используя . символ, соответствующий всем типам значений:
rename -v s/.b./b/ \(b\).*
Это решение не очень приятно. Итак, как мне сопоставить ( и ) в Bash/Linux/Unix Regex?
