Antworten:
Es hängt davon ab, ob Sie versuchen, Links zu einer bestimmten aufgerufenen Datei zu finden. foo.txt,
Dies ist der einzig gute Weg:
find -L / -samefile path/to/foo.txt
Auf der anderen Seite, wenn Sie nur versuchen, Links zu einer Datei zu finden , die zufällig benannt ist foo.txt
, dann so etwas wie
find / -lname foo.txt
oder
find . -lname \*foo.txt # ignore leading pathname components
-xtype l
nur
find . -lname '*foo.dir*'
(Übereinstimmungen zB file.txt -> ../foo.dir/file.txt
) suchen
Suchen Sie die Inode-Nummer der Datei und suchen Sie nach allen Dateien mit derselben Inode-Nummer:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
Versuchen Sie alternativ die lname
Option find
, aber dies funktioniert nicht, wenn Sie relative Symlinks haben, za -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefile
Option auch -L
für denselben Effekt verwenden, ohne die Inode selbst
foo
es sich um ein Verzeichnis handelt, verwenden Sie ln -di
in einer Zeile:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Ich bevorzuge die Verwendung des symlinks
Dienstprogramms, das auch bei der Suche nach defekten Symlinks nützlich ist. Installation durch:
sudo apt install symlinks
Alle Symlinks im aktuellen Ordner und in den Unterordnern anzeigen:
symlinks -rv .
-r
: rekursiv-v
: verbose (zeige alle Symlinks, nicht nur kaputte)Um einen bestimmten Symlink zu finden, gehen Sie einfach wie folgt vor grep
:
symlinks -rv . | grep foo.txt