Перейменувати - що означає “s //” vs “y //”?


9

Сторінка man містить два приклади:

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

Значить, це або s, або y і тоді /replaceThis/withThis

Що означає провідні s та y? Чи є інші варіанти?

Відповіді:


12

У першому випадку:

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

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

У другому випадку:

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

ви співпадаєте з простором простору шаблону виразів і транслітерацією до цілі. Іншими словами, діапазон AZ змінюється на діапазон az, що робить імена файлів нижчими.

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


Від man sed:

s / regexp / заміна /    
       Спроба зіставити regexp з простором шаблону. Якщо успіх -
       ful, замініть відповідну частину заміною. The
       заміна може містити спеціальний символ & посилатися на це
       частина простору візерунка, яка відповідає, і спеціальна
       втече \ 1 до \ 9, щоб посилатися на відповідну відповідність
       суб-вирази в регулярному вираженні.

y / джерело / dest /  
       Транслітеруйте символи в просторі візерунків, які з'являються
       у джерелі до відповідного символу у dest.

Велике спасибі - я просто не впевнений, що вказівка ​​людей на "sed" - найкраща ідея, враховуючи безліч реалізацій, особливо між будь-яким даним дистрибутивом Linux та OSX
aaaaaa

@aaaaaa Цей сайт стосується виключно Ubuntu.
wjandrea
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.