Я rename
весь час користуюся . Це досить просто, але, сподіваємось, ви знаєте базовий регулярний вираз:
rename "s/SEARCH/REPLACE/g" *
Це замінить рядок SEARCH
з REPLACE
в кожному файлі (тобто *
). В /g
означає глобальний, так що якщо у вас була SEARCH_SEARCH.jpg
, вона буде перейменована REPLACE_REPLACE.jpg
. Якби у вас цього не було /g
, він би здійснив заміну лише один раз, і таким чином тепер був названий REPLACE_SEARCH.jpg
. Якщо ви хочете без регістру, додайте /i
(це було б, /gi
або /ig
в кінці).
За допомогою регулярних виразів ви можете зробити набагато більше.
Зауважте, що це rename
команда prename
(aka Perl rename
), яка підтримує повні регулярні вирази Perl. Є ще одна, rename
яка використовує шаблони, і не настільки потужна. prename
раніше встановлювався за замовчуванням на Ubuntu (разом з Perl), але тепер, можливо, доведеться зробити:
sudo apt install rename
Ось кілька прикладів:
Префікс
Додати :
rename 's/^/MyPrefix_/' *
document.pdf
перейменований на MyPrefix_document.pdf
Видалити :
Також ви можете видалити небажані рядки. Скажімо, у вас було 20 MP3-файлів з назвою типу, CD RIP 01 Song.mp3
і ви хотіли видалити частину "CD RIP", і ви хотіли видалити це з усіх них однією командою.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
до 01 Song.mp3
Зверніть увагу на додатковий простір у '^CD RIP '
, без простору всі файли мали б пробіл як перший символ файлу. Також зауважте, що це буде працювати без ^
символу, але відповідатиме CD RIP
будь-якій частині імені файлу. У ^
гарантує , що тільки видаляє символи , якщо вони є початком файлу.
Суфікс
Додати :
rename 's/$/_MySuffix/' *
document.pdf
перейменований на document.pdf_MySuffix
Змінити :
rename 's/\.pdf$/.doc/' *
зміниться Something.pdf
в Something.doc
. (Причина зворотної косої риси полягає .
в тому, що символом підстановки в регулярному виразі є .pdf
збіг, qPDF
тоді як \.pdf
збігається лише точний рядок .pdf
. Також дуже важливо зауважити, якщо ви не знайомі з BASH, ви повинні ставити зворотні косої риски в SINGLE лапки! Ви не можете опускати цитати або використовувати подвійні лапки, або bash намагатиметься їх перекласти. У bash \.
і "\."
equals .
. (Але використовуються подвійні лапки та зворотні косої риси, наприклад, "\ n" для нового рядка, але оскільки "\."
це не дійсна зворотна послідовність втечі, це перекладається на .
)
Насправді ви навіть можете вкласти частини рядка в лапки замість цілого: 's/Search/Replace/g'
це те саме, що s/'Search'/'Replace'/g
і s/Search/Replace/g
в BASH. Ви просто повинні бути обережними щодо спеціальних символів (і пробілів).
Я пропоную використовувати -n
варіант, коли ви не позитивні, у вас є правильні регулярні вирази. Він показує, що було б перейменовано, а потім виходить, не роблячи цього. Наприклад:
rename -n s/'One'/'Two'/g *
Тут буде перераховано всі зміни, які він був би внесений, якби ви не поставили -n
прапор туди. Якщо це добре виглядає, натисніть, Upщоб повернутися назад, а потім стерти -n
та натисніть Enter(або замініть його, -v
щоб вивести всі внесені зміни).
Примітка : Версії Ubuntu вище 17.04 не постачаються rename
за замовчуванням, однак вони все ще доступні у сховищах. Використовуйте sudo apt install rename
для його встановлення