大家好,我需要在 Linux 中完成以下操作:
- 已知文件名为 'foo.txt'
- 查找所有符号链接到 '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
find . -lname '*foo.dir*'
(例如匹配 file.txt -> ../foo.dir/file.txt
)。 - Yonatanfind -L /usr -samefile /usr/share/pyshared/lsb_release.py 2>/dev/null | xargs ls -al
。 - MadHatter查找文件的inode号码,然后搜索所有具有相同inode号码的文件:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
另外,也可以尝试使用find
的lname
选项,但如果您有相对符号链接(例如a -> ../foo.txt
),则此方法将不起作用。
$ find . -lname /path/to/foo.txt
-L
选项时,结合使用-samefile
选项来达到同样的效果,而无需自行查找i-node节点。 - Hasturkunfoo
是一个目录,则使用ln -di
,在一行中:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
。 - rubo77我更喜欢使用symlinks
实用程序,这也在搜寻损坏的符号链接时非常方便。安装方法如下:
sudo apt install symlinks
ls -laR | grep "\-\>"
symlinks -rv .
-r
: 递归-v
: 显示所有符号链接,而不仅仅是损坏的 (verbose)要找到特定的符号链接,只需使用grep
命令:
symlinks -rv . | grep foo.txt