Problem schön gelöst. Vielen Dank an alle, die geantwortet haben.
Lukmac
8
Da ich eine gelöschte Antwort kommentiert habe, können Sie -xtype lnur
Listensymlinks
Möglicherweise möchten Sie erneut darauf zurückgreifen, da auf alle Dateien, die auf foo.txt verweisen, möglicherweise auch andere Links verweisen ... Beispiel: A-> B-> foo.txt, / tmp / C-> B-> foo.txt usw.
Olivier Dulac
Dies kann auch funktionieren, wenn Ihre Namenskomponente ein übergeordnetes Verzeichnis ist, das im Link benannt ist, indem Sie nach find . -lname '*foo.dir*'(Übereinstimmungen zB file.txt -> ../foo.dir/file.txt) suchen
Yonatan
22
Suchen Sie die Inode-Nummer der Datei und suchen Sie nach allen Dateien mit derselben Inode-Nummer:
Wenn Sie eine aktuelle Version von GNU find verwenden, können Sie die -samefileOption auch -Lfür denselben Effekt verwenden, ohne die Inode selbst
nachschlagen zu müssen
5
Dies findet aber auch Dateien auf anderen Dateisystemen, die zufällig dieselbe Inode-Nummer haben.
DigitalRoss
Wenn fooes sich um ein Verzeichnis handelt, verwenden Sie ln -diin einer Zeile:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77
1
Diese Antwort ist falsch. Ein Symlink hat nicht den gleichen Inode wie sein Ziel. Dies funktioniert nur für eine Datei in einem verknüpften Ordner. Aber das wurde nicht gefragt.
Jules Lamur
4
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:
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:Auf der anderen Seite, wenn Sie nur versuchen, Links zu einer Datei zu finden , die zufällig benannt ist
foo.txt
, dann so etwas wieoder
quelle
-xtype l
nurfind . -lname '*foo.dir*'
(Übereinstimmungen zBfile.txt -> ../foo.dir/file.txt
) suchenSuchen Sie die Inode-Nummer der Datei und suchen Sie nach allen Dateien mit derselben Inode-Nummer:
Versuchen Sie alternativ die
lname
Optionfind
, aber dies funktioniert nicht, wenn Sie relative Symlinks haben, za -> ../foo.txt
quelle
-samefile
Option auch-L
für denselben Effekt verwenden, ohne die Inode selbstfoo
es sich um ein Verzeichnis handelt, verwenden Sieln -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:Alle Symlinks im aktuellen Ordner und in den Unterordnern anzeigen:
-r
: rekursiv-v
: verbose (zeige alle Symlinks, nicht nur kaputte)Um einen bestimmten Symlink zu finden, gehen Sie einfach wie folgt vor
grep
:quelle