Symbolic link: найти все файлы, ссылающиеся на этот файл
Привет всем, мне нужно сделать это в linux:
- Предоставлено: имя файла 'foo.txt'
- Найти: все файлы, которые являются символическими ссылками на 'foo.txt'
Как это сделать? Спасибо!
Ответы
Ответ 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