Linux findet und entfernt alle symbolischen Links, die sich auf ein Verzeichnis beziehen

Linux findet und entfernt alle symbolischen Links, die sich auf ein Verzeichnis beziehen

Ich befinde mich in einer kleinen Situation: Ich habe viele symbolische Links erstellt, um sie zum Laufen zu bringen, und dabei alle möglichen Kombinationen ausprobiert. Jetzt habe ich diesen Fehler:

ls: cannot access /etc/sv/me: Too many levels of symbolic links

Es gibt keine symbolischen Links in /service/ oder /etc/sv/.
Die einzige Möglichkeit, diesen Fehler zu beheben, besteht für mich darin, alle symbolischen Links zu entfernen, die sich auf /service/ oder /etc/sv/ beziehen. Aber ich sehe die symbolischen Links nicht einmal?

Antwort1

Mit ein wenig findTrickserei können Sie zyklische symbolische Links identifizieren. Versuchen Sie Folgendes:

find /path/to/search -type l -a ! \( -xtype b -o -xtype c -o -xtype d -o -xtype p -o -xtype f -o -xtype s -o -xtype l \) 2>/dev/null

Dies funktioniert, indem nach Symlinks gefiltert wird und dann alles ausgeschlossen wird, bei dem der Zieltyp des Symlinks einer der möglichen Inode-Typen ist. Übrig bleiben nur diejenigen, bei denen der findZieltyp nicht bestimmt werden kann, was nur bei zyklischen Symlinks der Fall ist (unterbrochene Symlinks passen -xtype l).

Antwort2

Symlinks weisen keine „Fernwirkung“ auf – das Ziel eines Symlinks zu sein, wirkt sich nie direkt auf das Ziel aus.

Der angezeigte Fehler weist darauf hin, dass entweder /etc, oder /etc/sv, oder /etc/sv/meein symbolischer Link ist. Finden Sie heraus, welcher es ist, und beheben Sie das Problem.

Antwort3

Versuchen Sie , bei der Eingabe Kleinbuchstaben -l(Bindestrich, ell) anstelle von Großbuchstaben zu verwenden .-Lls

verwandte Informationen