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
for
reúne todos os arquivos no diretório atual (*
) e chamamv
em cada arquivo encontrado. - O
--
informamv
para 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-i
faria com quemv
avisasse 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'