Isso é impraticável - as outras respostas são muito mais rápidas e curtas - mas ...
Você pode usar o PowerShell! A Microsoft fez o código-fonte aberto recentemente e o tornou multiplataforma. Para obter instruções sobre downloads e instalação do seu sistema operacional, consulte a seção "Obter PowerShell" .
Depois de instalá-lo, você pode usar este breve script:
Get-ChildItem -File '*]*.avi' | ForEach-Object {
Rename-Item $_ -NewName (($_.Name -Split ']')[0] + '.avi')
}
Basicamente, ele percorre cada objeto no diretório atual que corresponde a um arquivo *]*.avi
, obtém a peça antes do colchete, recolhe-o .avi
novamente e atribui isso como o novo nome.
Para executá-lo diretamente do Bash, use este liner semi-golfado:
powershell -command $'gci -File \'*]*.avi\'|%{rename-item $_ -NewName (($_.Name -Split \']\')[0]+\'.avi\')}'
As citações que escapam são cortesia desta resposta do Stack Overflow .
(Testado no Bash no Ubuntu no Windows. Provavelmente, existe uma maneira muito mais curta de fazer isso com o PowerShell, mas eu queria mostrar algo compreensível para as pessoas que não conhecem expressões regulares.)
krename
é adorável. Ele tem todos os tipos de opções poderosas e mostra o que ele fará antes que realmente o faça. Você pode usá-lo para testar padrões que você pode usar no bash mais tarde.