Não há comando para redirecionar um link simbólico, tudo o que você pode fazer é removê-lo e criar outro. Supondo que você tenha utilitários GNU (por exemplo, em Linux ou Cygwin não integrado), você pode usar o -lname
primary de find
para corresponder links simbólicos por seu destino e readlink
para ler o conteúdo do link. Não testado:
find /mnt/home/someone/something -lname '/home/someone/*' \
-exec sh -c 'ln -snf "/mnt$(readlink "$0")" "$0"' {} \;
Seria melhor tornar esses links simbólicos relativos. Há um pequeno e conveniente utilitário chamado symlinks
(originalmente de Mark Lords, agora mantido por J. Brandt Buckley), presente em muitos Linux distribuições.
Antes da mudança, ou depois de restaurar os links válidos, execute symlinks -c /mnt/home/someone/something
para converter todos os links simbólicos absolutos no diretório especificado em links simbólicos relativos, a menos que eles cruzem um limite do sistema de arquivos.