Это все виды непрактично - другие ответы гораздо быстрее и короче - но ...
Вы можете использовать PowerShell! Microsoft недавно открыла его и сделала его кроссплатформенным. Инструкции по загрузке и установке для вашей ОС см. В разделе "Get 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, но я хотел показать что-то понятное людям, которые не знают регулярных выражений.)