Как вы перечисляете все символические ссылки в каталоге, который имеет не висящие ссылки?

Я хотел бы получить список всех символических ссылок в каталоге, который имеет действительные ссылки. Другими словами, я бы хотел, чтобы все неработающие ссылки были удалены из моего списка.

1 ответ

Решение

В ракушке, [ -L "$f" ] && [ -e "$f" ] Истинно, если и только если "$f" - это имя символической ссылки, цель которой существует. Так:

for f in *; do
    if [ -L "$f" ] && [ -e "$f" ]; then
        # do something with "$f"
    fi
done

(Никогда не используйте -a или же -o варианты test/[...]; на них нельзя полагаться, чтобы иметь здравый приоритет.)

Другие вопросы по тегам