Пожалуйста, не забудьте прочитать альтернативный ответ . Это даже более важно, хотя и не оценивается как высокий на данный момент.
Вы можете использовать это, чтобы удалить все символические ссылки:
find -type l -delete
с современными findверсиями.
В старых версиях find это может быть:
find -type l -exec rm {} \;
# or
find -type l -exec unlink {} \;
Чтобы ограничить определенную цель ссылки, предполагая, что ни один из путей не содержит символа новой строки:
find -type l | while IFS= read -r lnkname; do if [ "$(readlink '$lnkname')" == "/your/exact/path" ]; then rm -- "$lnkname"; fi; done
или красиво отформатированный
find -type l |
while IFS= read -r lnkname;
do
if [ "$(readlink '$lnkname')" = "/your/exact/path" ];
then
rm -- "$lnkname"
fi
done
ifМожет, конечно , также включать в себя более сложное условие , такие как соответствие шаблона с grep.
С учетом вашего случая:
find -type l | while IFS= read -r lnk; do if (readlink "$lnk" | grep -q '^/usr/local/texlive/'); then rm "$lnk"; fi; done
или красиво отформатированный:
find -type l | while IFS= read -r lnk
do
if readlink "$lnk" | grep -q '^/usr/local/texlive/'
then
rm "$lnk"
fi
done