Страница man дает два примера:
rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *
Так что это либо с или у, а затем /replaceThis/withThis
Что означают ведущие s и y? Есть ли другие варианты?
Страница man дает два примера:
rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *
Так что это либо с или у, а затем /replaceThis/withThis
Что означают ведущие s и y? Есть ли другие варианты?
Ответы:
В первом случае:
rename 's/\.bak$//' *.bak
вы запускаете регулярное выражение для имен файлов и заменяете соответствующую часть выражений (.bak в конце имени файла) вторым выражением (которое пусто).
Во втором случае:
rename 'y/A-Z/a-z/' *
вы сравниваете с шаблоном регулярного выражения и транслитерируете к цели. Другими словами, диапазон AZ изменяется на диапазон az, делая имена файлов строчными.
Я предлагаю вам взглянуть на man-страницу для sed, чтобы узнать больше команд и подробностей. Я считаю, что команда 's' используется чаще всего. Кроме того, регулярное выражение (раздел 7) и документация на Perl также могут помочь. В частности, вот учебник по Perl и регулярным выражениям.
От man sed
:
s / регулярное выражение / замена / Попытайтесь сопоставить регулярное выражение с пространством шаблона. Если успех Замените ту часть, которая соответствует замене. замена может содержать специальный символ и ссылаться на это часть шаблонного пространства, которое соответствует, и специальный экранирует от \ 1 до \ 9 для ссылки на соответствующее совпадение подвыражения в регулярном выражении. г / источник / приемник / Транслитерировать символы в шаблонном пространстве, которые появляются в источнике к соответствующему символу в dest.