Bash
Com Bash puro, removendo tudo até o primeiro - :
for f in *; do mv -- "$f" "${f#*- }"; done
Se você quiser remover tudo até o último - , use ## em vez de # .
Para dividir:
- O
forreúne todos os arquivos no diretório atual (*) e chamamvem cada arquivo encontrado. - O
--informamvpara parar as opções de análise e é uma proteção para impedir que arquivos iniciados com-sejam interpretados como opções (por exemplo, um arquivo chamado-ifaria com quemvavisasse antes de mover ). - A
${f#*- }é a manipulação de string e remove a parte que você não quer cada nome de arquivo. - Todas as variáveis são citadas para impedir que nomes de arquivos com espaços ou caracteres globbing interrompam o comando. Sempre cite duas vezes suas variáveis.
rename
Com rename que é comumente encontrado nas distribuições do Linux, por exemplo, se você quiser especificar o artista:
rename 's/Versailles - //' *
Ou se você quiser remover tudo até o último - :
rename 's/.*- //' *
Zsh
Em Zsh e zmv , que você precisa carregar com autoload -U zmv :
zmv 'Versailles - (*)' '$1'