Finden aller symbolischen und festen Links zu einer Datei unter UNIX


9

Wenn ich eine bestimmte Datei in einem UNIX-Dateisystem habe, gibt es eine Möglichkeit, mit bash alle symbolischen und harten Links zu dieser Datei zu finden? Wenn ich für jeden unterschiedliche Befehle benötige, welche sind das?

Antworten:


8

Versuchen Sie dies mit GNU find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

Beispielausgabe:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

Sie können -lsanstelle von verwenden, -execaber es zeigt den Inode und andere Informationen der Zieldatei anstelle der einzelnen Dateien.


Diese Ausgabe zeigt Hard- und Sym-Links? Sym-Links angezeigt durch -> Pfeil?
aaaidan

@aaaidan: Ja, das ist richtig. Die Inode-Nummern von x1 und x2 sind gleich, was darauf hinweist, dass es sich um feste Verbindungen handelt. Der Pfeil zeigt einen Symlink an. Verwenden von -Lund -samefilebewirkt, dass beide aufgelistet werden. Wenn Sie weglassen, werden -Lsymbolische Links nicht befolgt (siehe man find).
Bis auf weiteres angehalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.