Por favor, leia a resposta alternativa . É ainda mais importante, apesar de não ter votado tão alto neste momento.
Você pode usar isso para excluir todos os links simbólicos:
find -type l -delete
com as modernas versões find
.
Em versões mais antigas, talvez seja necessário:
find -type l -exec rm {} \;
# or
find -type l -exec unlink {} \;
Para limitar a um determinado destino de link, supondo que nenhum dos caminhos contenha nenhum caractere de nova linha:
find -type l | while IFS= read -r lnkname; do if [ "$(readlink '$lnkname')" == "/your/exact/path" ]; then rm -- "$lnkname"; fi; done
ou bem formatado
find -type l |
while IFS= read -r lnkname;
do
if [ "$(readlink '$lnkname')" = "/your/exact/path" ];
then
rm -- "$lnkname"
fi
done
O if
poderia também incluir uma condição mais complexa, como corresponder a um padrão com grep
.
Feito sob medida para o seu caso:
find -type l | while IFS= read -r lnk; do if (readlink "$lnk" | grep -q '^/usr/local/texlive/'); then rm "$lnk"; fi; done
ou bem formatado:
find -type l | while IFS= read -r lnk
do
if readlink "$lnk" | grep -q '^/usr/local/texlive/'
then
rm "$lnk"
fi
done