Переименовать - что означает & ldquo; s // & rdquo; vs & ldquo; y // & rdquo; имею в виду?

Страница руководства дает два примера:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

Так что это либо s, либо y, а затем /replaceThis/withThis

Что означают ведущие s и y ? Есть ли другие варианты?

9
задан 8 October 2018 в 01:59

1 ответ

В первом случае:

rename 's/\.bak$//' *.bak

вы запускаете регулярное выражение для имен файлов и заменяете соответствующую часть выражений (.bak в конце имени файла) вторым выражением (которое является пусто).

Во втором случае:

rename 'y/A-Z/a-z/' *

вы сопоставляете пространство шаблонов регулярных выражений и транслитерируете к цели. Другими словами, диапазон A-Z изменяется на диапазон a-z, делая имена файлов строчными.

Я предлагаю вам заглянуть на страницу руководства для sed , чтобы узнать больше команд и подробностей. Я считаю, что команда 's' используется чаще всего. Также может помочь регулярное выражение (раздел 7) и документация на Perl. В частности, вот учебник по Perl и регулярным выражениям.


Из man sed:

s/regexp/replacement/    
       Attempt to match regexp against the pattern space.  If  success‐
       ful,   replace  that  portion  matched  with  replacement.   The
       replacement may contain the special character & to refer to that
       portion  of  the  pattern  space  which matched, and the special
       escapes \1 through \9 to refer  to  the  corresponding  matching
       sub-expressions in the regexp.

y/source/dest/  
       Transliterate  the  characters in the pattern space which appear
       in source to the corresponding character in dest.
0
ответ дан 8 October 2018 в 01:59

Другие вопросы по тегам:

Похожие вопросы: