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 lnur
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 lnameOption find, aber dies funktioniert nicht, wenn Sie relative Symlinks haben, za -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefileOption auch -Lfür denselben Effekt verwenden, ohne die Inode selbst
fooes sich um ein Verzeichnis handelt, verwenden Sie ln -diin einer Zeile:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Ich bevorzuge die Verwendung des symlinksDienstprogramms, 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