Seu código do shell tem dois problemas:
- O
echo
não deveria estar lá.
- A variável
$i
está digitada incorretamente como $1
no nome do arquivo de destino.
Para fazer uma cópia de um arquivo no mesmo diretório que o próprio arquivo, use
cp thefile thecopy
Se você inserir mais alguma coisa, por exemplo,
cp thefile theotherthing thecopy
assume-se que você deseja copiar thefile
e theotherthing
para o diretório chamado thecopy
.
No seu caso, ele procura especificamente um arquivo chamado test.ogg
e um nomeado echo
para copiar para o diretório test$1.ogg
.
O $1
mais provável será expandir para uma sequência vazia. É por isso que, quando você exclui o echo
comando, você obtém "test.ogg e test.ogg são os mesmos arquivos"; o comando que está sendo executado é essencialmente
cp test.ogg test.ogg
Provavelmente é um erro de digitação.
No final, você quer algo como isto:
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 <test.ogg >/dev/null
Nota: Isso provavelmente funcionaria para 100 cópias, mas para milhares de cópias pode gerar um erro "lista de argumentos muito longa". Nesse caso, volte a usar um loop.
echo
que não deveria estar lá e o$1
que deveria estar$i
?