Embora a resposta do autor original esteja correta, acho melhor explicar por que o comando mv
listado na pergunta não funciona.
O problema é um mal-entendido básico sobre a maneira como um shell Unix funciona - o que é bastante diferente da linha de comando do DOS. Os caracteres especiais (*,?, Etc.) que selecionam múltiplos arquivos (eles são chamados de 'glob') funcionam no nível do shell, não dos comandos. Então o primeiro comando é expandido pelo shell para
mv x54y56.dat x57y58.dat x59y60.dat "some prefix - *"
Suponho que no diretório você tenha apenas esses três arquivos para simplificar, e que não tenha nenhum arquivo que corresponda ao nome de "some prefix - "
pattern --- para que o shell provavelmente o deixe como está. (Eu estou usando as aspas para incorporar espaços, acho mais fácil de ler do que folgas, embora os detalhes estão no manual para o seu shell).
Agora, mv a b c d
tentará mover os arquivos a
, b
, c
para o diretório d
e falhará --- porque d
não existe.
A solução rename
, se você tiver o comando rename
, é o caminho certo. Como o OP encontrou,
rename 's//some prefix - /' *.dat
funciona bem. Nos velhos bons dias, você deveria fazer
for i in *.dat; do
mv "$i" "some prefix - $i"
done
para apenas fazer um movimento no momento.