【发布时间】:2011-05-31 08:26:20
【问题描述】:
大家好,我需要在 linux 中执行此操作:
- 给定:文件名“foo.txt”
- 查找:所有指向“foo.txt”的符号链接的文件
怎么做?谢谢!
【问题讨论】:
大家好,我需要在 linux 中执行此操作:
怎么做?谢谢!
【问题讨论】:
这取决于,如果您尝试查找名为 foo.txt, 的特定文件的链接,那么这是唯一的好方法:
find -L / -samefile path/to/foo.txt
另一方面,如果您只是想查找到 任何 文件的链接,该文件恰好名为 foo.txt,那么类似
find / -lname foo.txt
或
find . -lname \*foo.txt # ignore leading pathname components
【讨论】:
-xtype l 仅查找列表符号链接
find . -lname '*foo.dir*'(匹配例如file.txt -> ../foo.dir/file.txt)
找到文件的inode号,然后搜索所有具有相同inode号的文件:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
或者,尝试find 的lname 选项,但是如果你有相对的符号链接,这将不起作用,例如a -> ../foo.txt
$ find . -lname /path/to/foo.txt
【讨论】:
-samefile 选项和 -L 获得相同的效果,而无需自己查找 inode
foo是一个目录,使用ln -di,在一行中:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
我更喜欢使用symlinks 实用程序,它在搜索损坏的符号链接时也很方便。安装者:
sudo apt install symlinks
显示当前文件夹和子文件夹中的所有符号链接:
symlinks -rv .
-r: 递归-v:详细(显示所有符号链接,不仅是损坏的符号链接)要查找特定的符号链接,只需grep:
symlinks -rv . | grep foo.txt
【讨论】:
symlinks 不能可靠地(AFAIK)搜索所谓的“不同文件系统”)。此外,symlinks -rv . 2>/dev/null | grep foo.txt 可能会导致“更干净”的输出...