Це все непрактично - інші відповіді набагато швидше і коротше - але ...
Можна використовувати PowerShell! Microsoft відкритим джерелом Останнім часом і зробив його крос-платформенним. Інструкції з завантаження та інсталяції для ОС див розділ "Отримати PowerShell" .
Після встановлення його можна скористатися цим коротким сценарієм:
Get-ChildItem -File '*]*.avi' | ForEach-Object {
Rename-Item $_ -NewName (($_.Name -Split ']')[0] + '.avi')
}
В основному, він проходить через кожен об'єкт у поточному каталозі, що є відповідним файлом *]*.avi
, отримує частину перед кронштейном, гаки .avi
повертається до нього і призначає це як нове ім'я.
Щоб запустити його безпосередньо з Bash, скористайтеся цією напівдоріжкою:
powershell -command $'gci -File \'*]*.avi\'|%{rename-item $_ -NewName (($_.Name -Split \']\')[0]+\'.avi\')}'
Цитувати втікання люб'язно це відповідь на переповнення стека .
(Перевірено в Bash на Ubuntu на Windows. Можливо, це значно коротший спосіб зробити з PowerShell, але я хотів показати те, що зрозуміло людям, які не знають регулярних виразів.)
krename
прекрасний. Він має всілякі потужні варіанти і показує вам, що він збирається робити, перш ніж він насправді робить це. Ви навіть можете використовувати його, щоб перевірити шаблони, які ви могли б використовувати в bash пізніше.