Здравейте на всички, трябва да направя това в linux:
- Дадено: име на файл „foo.txt“
- Намиране: всички файлове, които са символни връзки към „foo.txt“
Как да го направим? Благодаря!
Здравейте на всички, трябва да направя това в linux:
Как да го направим? Благодаря!
Зависи, ако се опитвате да намерите връзки към конкретен файл, който се нарича foo.txt,
, това е единственият добър начин:
find -L / -samefile path/to/foo.txt
От друга страна, ако просто се опитвате да намерите връзки към всеки файл, който се казва foo.txt
, тогава нещо като
find / -lname foo.txt
or
find . -lname \*foo.txt # ignore leading pathname components
-xtype l
, за да намерите само списък със символни връзки
- person Hasturkun; 31.05.2011
find . -lname '*foo.dir*'
(съвпада напр. file.txt -> ../foo.dir/file.txt
)
- person Yonatan; 07.06.2017
Намерете номера на 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
за същия ефект, без да се налага сами да търсите inode
- person Hasturkun; 31.05.2011
foo
е директория, използвайте ln -di
, в един ред: find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
- person rubo77; 07.08.2016
Предпочитам да използвам помощната програма symlinks
, която също е удобна при търсене на повредени символни връзки. Инсталиране от:
sudo apt install symlinks
Показване на всички символни връзки в текущата папка и подпапки:
symlinks -rv .
-r
: рекурсивен-v
: подробен (показва всички символни връзки, не само повредените)За да намерите конкретна символна връзка, просто grep
:
symlinks -rv . | grep foo.txt