Использование инструмента переименования для удаления символа перед заглавной буквой - PullRequest
1 голос
/ 23 октября 2019

Я допустил ошибку в своем скрипте и заменил все пробелы на 's' вместо подчеркивания. Я хотел бы отменить это изменение. У меня есть имена вроде:

BatmansBegins
FightsClub
ThesDeparted
TouchsOfsEvil

Я бы хотел назвать это

Batman_Begins
Fight_Club
The_Departed
Touch_Of_Evil

У меня есть эта команда в данный момент, но она заменяет 's' и заглавную букву, которая следует заэто

rename -n 's/s[A-Z]/_/g'

1 Ответ

3 голосов
/ 23 октября 2019

Вам нужно записать заглавную букву и использовать обратную ссылку вместо. Поэтому используйте его как:

rename -n 's/s([A-Z])/_$1/g' *s[A-Z]*

Другой вариант - использовать положительное предположение в вашем регулярном выражении:

rename -n 's/s(?=[A-Z])/_/g' *s[A-Z]*

(?=[A-Z]) - это положительное предположение, которое подтверждает наличие заглавной буквы после сопоставления s.

PS: Существует довольно много вариантов инструмента rename, и похоже, что вы используете популярную утилиту rename на основе Perl, и этот ответ также основан на этом.

...