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

luk*_*mac 107 linux symlink

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

  • 给定:文件名'foo.txt'
  • 查找:所有文件都是'foo.txt'的符号链接

怎么做?谢谢!

Dig*_*oss 124

这取决于,如果您正在尝试查找被调用的特定文件的链接,foo.txt,那么这是唯一的好方法:

find -L / -samefile path/to/foo.txt
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您只是想找到恰好命名的任何文件的链接foo.txt,那么就像

find / -lname foo.txt
Run Code Online (Sandbox Code Playgroud)

要么

find . -lname \*foo.txt # ignore leading pathname components
Run Code Online (Sandbox Code Playgroud)

  • 当我评论删除的答案时,您可以使用`-xtype l`来查找列表符号链接 (7认同)

dog*_*ane 19

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

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360
Run Code Online (Sandbox Code Playgroud)

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

$ find . -lname /path/to/foo.txt
Run Code Online (Sandbox Code Playgroud)

  • 但是这也会在其他文件系统上找到碰巧具有相同inode编号的文件. (5认同)
  • 如果使用最新版本的GNU find,你也可以使用带有`-L`的`-samefile`选项获得相同的效果,而不必自己查找inode (3认同)

Nik*_*Nik 5

我更喜欢使用该symlinks实用程序,它在搜索损坏的符号链接时也很方便。安装方式:

sudo apt install symlinks
Run Code Online (Sandbox Code Playgroud)

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

symlinks -rv .
Run Code Online (Sandbox Code Playgroud)
  • -r: 递归
  • -v: 详细(显示所有符号链接,不仅是损坏的符号链接)

要查找特定的符号链接,只需grep

symlinks -rv . | grep foo.txt
Run Code Online (Sandbox Code Playgroud)