Risposte:
Dipende, se stai cercando di trovare collegamenti a un file specifico che viene chiamato, foo.txt,
questo è l'unico buon modo:
find -L / -samefile path/to/foo.txt
D'altra parte, se stai solo cercando di trovare collegamenti a qualsiasi file che abbia un nome foo.txt
, allora qualcosa di simile
find / -lname foo.txt
o
find . -lname \*foo.txt # ignore leading pathname components
-xtype l
per trovare solo i
find . -lname '*foo.dir*'
(corrisponde ad esempio file.txt -> ../foo.dir/file.txt
)
Trova il numero di inode del file e quindi cerca tutti i file con lo stesso numero di inode:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
In alternativa, prova l' lname
opzione di find
, ma non funzionerà se hai collegamenti simbolici relativi, ad esa -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefile
opzione con -L
per lo stesso effetto, senza dover cercare tu stesso l'inode
foo
è una directory, usa ln -di
, in una riga:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Preferisco usare l' symlinks
utilità, che è utile anche quando si cercano collegamenti simbolici interrotti. Installa da:
sudo apt install symlinks
Mostra tutti i collegamenti simbolici nella cartella e nelle sottocartelle correnti:
symlinks -rv .
-r
: ricorsivo-v
: verbose (mostra tutti i link simbolici, non solo quelli non funzionanti)Per trovare un collegamento simbolico specifico, basta grep
:
symlinks -rv . | grep foo.txt