Відповіді:
Це залежить, якщо ви намагаєтеся знайти посилання на певний файл, який викликається, 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