有没有方法可以查找有多少个软链接指向某个文件?

有没有方法可以查找有多少个软链接指向某个文件?

SSH 是到 dropbear 的软链接(符号链接或符号链接)。

我想知道有多少文件软链接到 dropbear。有什么方法可以找到有多少软链接指向某个文件吗?

如果它还显示指向该文件的软链接列表就更好了。

/usr/bin/ssh -l
lrwxrwxrwx    1 root     root           16 Apr 22  2011 /usr/bin/ssh -> ../sbin/dropbear

答案1

我想出了这个链条:

find . -type l -ls | egrep -o -- '-> .+$' | sort | uniq -c

它列出了所有符号链接,并对其后的所有内容进行 greps->处理、排序和分组。

这是第一步,但目前还不够完美。您可以继续运行find/获取一个大列表,但如果符号链接指向相对目标,则命令会将它们分组在一起,即使它们不相同。

例子:

/home/shi/bin/list.sh -> ./show.sh
/home/shi/sbin/all.sh -> ./show.sh

show.sh可能是不同的程序-一个在bin,另一个在sbin

另一个问题是其中包含常规文件名->(虽然不太常见)。的格式ls无法区分这一点。

例子:

test.sh -> all.sh -> list.sh

名为 的文件test.sh可能链接到all.sh -> list.sh或名为 的文件test.sh -> all.sh可能链接到list.sh

我希望这对你的情况有帮助。为了得到完美的解决方案,你应该使用脚本(sh、PHP、Perl)。

答案2

如果你不需要跨文件系统检查,你可以使用符号链接

symlinks -rsv / | grep test_off.sh | tee >(wc -l)

以上应该输出指向文件的链接列表并计算其数量:

absolute: /usr/bin/test_off.sh -> /usr/share/acpi_call/test_off.sh
absolute: /root/linkone -> /usr/share/acpi_call/test_off.sh
relative: /root/rellinktwo -> ../usr/share/acpi_call/test_off.sh
3

有关更多详细信息,请参阅 man symlinks。

相关内容