Подтвердить что ты не робот

Symbolic link: найти все файлы, ссылающиеся на этот файл

Привет всем, мне нужно сделать это в linux:

  • Предоставлено: имя файла 'foo.txt'
  • Найти: все файлы, которые являются символическими ссылками на 'foo.txt'

Как это сделать? Спасибо!

4b9b3361

Ответ 1

Это зависит, если вы пытаетесь найти ссылки на определенный файл, который называется foo.txt,, то это единственный хороший способ:

find -L / -samefile path/to/foo.txt

С другой стороны, если вы просто пытаетесь найти ссылки на любой файл, который называется foo.txt, то что-то вроде

find / -lname foo.txt

или

find . -lname \*foo.txt # ignore leading pathname components

Ответ 2

Найдите номер inode файла и затем выполните поиск всех файлов с тем же номером inode:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

В качестве альтернативы попробуйте параметр lname find, но это не сработает, если у вас есть относительные символические ссылки, например. a -> ../foo.txt

$ find . -lname /path/to/foo.txt

Ответ 3

Я предпочитаю использовать утилиту symlinks, которая также удобна при поиске сломанных символических ссылок. Установить по:

sudo apt install symlinks

Показать все символические ссылки в текущей папке и подпапках:

symlinks -rv .
  • -r: рекурсивный
  • -v: verbose (показать все символические ссылки, а не только сломанные)

Чтобы найти определенную символическую ссылку, просто grep:

symlinks -rv . | grep foo.txt