Se você quiser evitar reinventar a roda, poderá usar a capacidade incorporada do comando mv
para fazer backups numerados automaticamente; se o seu shell suportar a conversão de maiúsculas nativamente, isso pode ser tão simples quanto
for f in *; do mv --backup=numbered -- "$f" "${f,,}"; done
O formato do número de backup padrão é .~1~
, por exemplo, fornecido
SOME FILE sOmE fIlE some file
então
$ for f in *; do mv -v --backup=numbered -- "$f" "${f,,}"; done
‘SOME FILE’ -> ‘some file’ (backup: ‘some file.~1~’)
‘sOmE fIlE’ -> ‘some file’ (backup: ‘some file.~2~’)
mv: ‘some file’ and ‘some file’ are the same file
Se você não gosta da numeração padrão, você pode mudar isso depois do fato; se o seu sistema incluir o comando rename
baseado em perl que poderia ser algo como
$ rename -v -- 's/\.~(\d+)~/$1/' *.~*~
some file.~1~ renamed as some file1
some file.~2~ renamed as some file2
finalmente dando
$ ls
some file some file1 some file2