Como a resposta à pergunta que você vinculou já declara, mv pode sufocar arquivos que, de outra forma, seriam substituídos pelo arquivo movido por um número para fornecer um nome de arquivo exclusivo:
mv --backup=t <source_file> <dest_file>
O comando funciona anexando o próximo sufixo de número não usado ao arquivo que foi o primeiro no diretório de destino. O arquivo que você está movendo manterá seu nome original.
No entanto, isso adicionará sufixos como .~1~ , o que parece não ser o que você deseja:
$ ls
file.pdf
file.pdf.~1~
file.pdf.~2~
Você pode renomear esses arquivos em uma segunda etapa para obter os nomes em um formato como file_1.pdf em vez de file.pdf.~1~ , por exemplo, assim:
rename 's/((?:\..+)?)\.~(\d+)~$/_$2$1/' *.~*~
Isso leva todos os arquivos que terminam com o sufixo de backup indesejado (correspondendo ao shell glob *.~*~ ) e permite que a ferramenta rename tente corresponder à expressão regular ((?:\..+)?)\.~(\d+)~$ no nome do arquivo. Se isso corresponder, ele capturará o índice do sufixo .~1~ -like como segundo grupo ( $2 ) e, opcionalmente, se o nome do arquivo tiver uma extensão antes desse sufixo como .pdf , isso será capturado pelo primeiro Código de grupo%). Em seguida, ele substitui a parte completa do nome do arquivo correspondente por $1 , inserindo os valores capturados em vez dos marcadores de posição.
Basicamente, ele será renomeado _$2$1 a file.pdf.~1~ e file_1.pdf a something.~42~ , mas não é possível detectar se um arquivo tem várias extensões, por exemplo, something_42 se tornaria archive.tar.gz.~5~