символьная ссылка: найти все файлы, которые ссылаются на этот файл
Алло все, мне нужно сделать это в linux:
- дано: имя файла ' foo.txt'
- найти: все файлы, которые являются символическими ссылками на ' foo.txt'
Как это сделать? Спасибо!
3 ответов
это зависит, если вы пытаетесь найти ссылки на конкретный файл, который называется foo.txt,
тогда это единственный хороший способ:
find -L / -samefile path/to/foo.txt
С другой стороны, если вы просто пытаетесь найти ссылки на любой файл с именем foo.txt
, потом что-то вроде
find / -lname foo.txt
или
find . -lname \*foo.txt # ignore leading pathname components
найдите номер индекса файла, а затем выполните поиск всех файлов с одинаковым номером индекса:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
в качестве альтернативы попробуйте на find
, но это не будет работать, если у вас есть относительные ссылки, например a -> ../foo.txt
$ find . -lname /path/to/foo.txt
Я предпочитаю использовать symlinks
утилита, которая также удобна при поиске сломанных символических ссылок. Установите:
sudo apt install symlinks
показать все символические ссылки в текущей папке и подпапках:
symlinks -rv .
-
-r
: рекурсивный -
-v
: verbose (показать все символические ссылки, а не только сломанные)
найти конкретную ссылку, просто grep
:
symlinks -rv . | grep foo.txt