Seu código de shell tem dois problemas:
- O
echo
não deveria estar lá. - A variável
$i
é digitada incorretamente como$1
no nome do arquivo de destino.
Para fazer uma cópia de um arquivo no mesmo diretório do arquivo, use
cp thefile thecopy
Se você inserir mais alguma coisa lá, por exemplo,
cp thefile theotherthing thecopy
presume-se que você gostaria de copiar thefile
e theotherthing
no diretório chamado thecopy
.
No seu caso, ele procura especificamente por um arquivo chamado test.ogg
e um chamado echo
para copiar para o diretório test$1.ogg
.
O $1
provavelmente será expandido para uma string vazia. É por isso que, quando você exclui o echo
do comando, obtém "test.ogg e test.ogg são os mesmos arquivos"; o comando sendo executado é essencialmente
cp test.ogg test.ogg
Este é provavelmente um erro de digitação.
No final, você quer algo assim:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
Ou, como alternativa
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
Ou usando tee
:
tee test{1..100}.ogg >/dev/null <test.ogg