Это все виды непрактично - другие ответы гораздо быстрее и короче - но ...
Вы можете использовать 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 позже.