符号链接: 查找所有链接到该文件的文件

大家好,我需要在 linux 中这样做:

  • 给定: 文件名‘ foo.txt’
  • 查找: 所有符号链接到‘ foo.txt’的文件

怎么做? 谢谢!

94671 次浏览

查找文件的 inode 编号,然后搜索具有相同 inode 编号的所有文件:

$ ls -i foo.txt
41525360 foo.txt


$ find . -follow -inum 41525360

或者,尝试 findlname选项,但是如果你有相对的符号链接,例如 a -> ../foo.txt,这将不起作用

$ find . -lname /path/to/foo.txt

这取决于,如果你试图找到一个叫做 foo.txt,的特定文件的链接,那么这是唯一的好方法:

find -L / -samefile path/to/foo.txt

另一方面,如果您只是试图找到指向 任何文件的链接,而这个文件恰好命名为 foo.txt,那么类似于

find / -lname foo.txt

或者

find . -lname \*foo.txt # ignore leading pathname components

我更喜欢使用 symlinks实用程序,它在搜索断开的符号链接时也很方便:

sudo apt install symlinks

显示当前文件夹和子文件夹中的所有符号链接:

symlinks -rv .
  • 递归
  • 详细(显示所有符号链接,而不仅仅是断开的符号链接)

要找到一个特定的符号链接,只需要 grep:

symlinks -rv . | grep foo.txt