Este é um "comentário adicional" e não uma resposta completa por si só.
Este é um modo muito longo de 'explicar' um conceito menor - ele parecerá longo e pedante, exceto se o leitor não entender o assunto.
Breve resumo:
Se houver mais de um arquivo de nome como foo.txt [(n)]
-
foo.txt, foo.txt (1) - renomear - > nenhuma mudança
Parece que nada aconteceu. Fez.
-
foo.txt (1), foo.txt (2) - renomear - > foo.txt, foo.txt (2) (provavelmente)
Um arquivo foi renomeado, um não.
Mais longo:
Você diz que não tem arquivos duplicados.
Você pode estar correto
MAS - o seguinte é trivialmente óbvio, se você conhece, mas uma armadilha sutil, se você não tiver encontrado antes.
No que diz respeito ao sistema
foo.txt = = foo.txt (1) = = foo.txt (2) = etc
independentemente do conteúdo ou tamanho do arquivo.
ie Se você tem dois nomes de arquivos foo.txt com ou sem (n) depois deles, o sistema pensa que eles são duplicados e / ou são duplicados.
De qualquer maneira, um processo de renomeação falhará.
Se o processo de renomeação criar dois arquivos com o mesmo nome, ele falhará quando for feita a tentativa de criar a primeira duplicata. Mas
Em um caso, a falha não criará nenhuma saída, de modo que parecerá que "nada aconteceu" quando realmente ocorreu "cópia falhada devido à colisão de nomes".
Este caso ocorre quando um arquivo não tem nenhum (n) sufixo e outro tem.
por exemplo, se os arquivos existentes forem foo.txt e foo.txt (1), a renomeação de foo.txt (1) criaria uma duplicata se permitida, portanto, não ocorrerá e, portanto, nenhuma ação ocorrerá.
foo.txt, foo.txt (1) - > sem alteração
Mas se os arquivos existentes forem, por exemplo, foo.txt (1) e foo.txt (2), então a renomeação de foo.txt (1) NÃO criará uma duplicata, assim ocorrerá, MAS a renomeação de foo.txt (2) subsequentemente criaria uma duplicata se permitida para que nenhuma ação de renomeação de segundo arquivo ocorrerá.
foo.txt (1), foo.txt (2) - > foo.txt, foo.txt (2) (provavelmente)