Відповіді:
Це залежить, якщо ви намагаєтеся знайти посилання на певний файл, який викликається, foo.txt,
то це єдиний хороший спосіб:
find -L / -samefile path/to/foo.txt
З іншого боку, якщо ви просто намагаєтесь знайти посилання на будь-який файл, на який трапляється ім'я foo.txt
, то щось подібне
find / -lname foo.txt
або
find . -lname \*foo.txt # ignore leading pathname components
-xtype l
лише список символьних посилань у списку
find . -lname '*foo.dir*'
(відповідає, наприклад file.txt -> ../foo.dir/file.txt
)
Знайдіть номер файлу inode та знайдіть усі файли з однаковим номером inode:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
Крім того, спробуйте lname
варіант find
, але це не спрацює, якщо у вас є відносні посилання, наприкладa -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefile
опцією з -L
тим же ефектом, не
foo
це каталог, використовуйте ln -di
в одному рядку:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Я вважаю за краще використовувати symlinks
утиліту, яка також зручна при пошуку зламаних символьних посилань. Встановити:
sudo apt install symlinks
Показати всі посилання в поточній папці та вкладених папках:
symlinks -rv .
-r
: рекурсивна-v
: багатослівний (показати всі посилання, не тільки зламані)Щоб знайти конкретне символьне посилання, просто grep
:
symlinks -rv . | grep foo.txt