Este comando deve funcionar:
find -type l -exec bash -c 'ln -f "$(readlink -m "$0")" "$0"' {} \;
Como funciona:
-
find -type llocaliza todos os links no diretório atual. -
-exec bash -c '...' {} \;chama o bash para executar....Ele passa
{}- o nome do link que está sendo processado no momento & traço; como um argumento, que o bash pode acessar como$0. -
readlink -m "$0"retorna o caminho absoluto do destino do link simbólico. -
ln -f "$(readlink -m "$0")" "$0"overwrites (-f) o link simbólico$0com um link físico para seu destino.
Se o link não puder ser convertido por algum motivo, ele permanecerá intacto e ln imprimirá uma mensagem de erro.