символьная ссылка: найти все файлы, которые ссылаются на этот файл
Алло все, мне нужно сделать это в 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
: подробный (показать все символические ссылки, а не только сломанные)найти конкретную ссылку, просто
grep
:symlinks -rv . | grep foo.txt