我已经能够找到一个命令来获取仅有断开链接的列表,但不能找到"工作"符号链接
find -H mydir -type l
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做呢?
如果我有这些文件mydir:
foo
bar
bob
carol
Run Code Online (Sandbox Code Playgroud)
如果它们都是符号链接,但bob指向不存在的文件,我想看
foo
bar
carol
Run Code Online (Sandbox Code Playgroud)
随着find(1)使用
$ find . -type l -not -xtype l
Run Code Online (Sandbox Code Playgroud)
此命令查找在跟随后不再是链接的链接 - 即未断开的链接。(请注意,它们可能指向普通或特殊文件、目录或其他。使用-xtype f代替-not -xtype l仅查找指向普通文件的链接。)
$ find . -type l -not -xtype l -ls
Run Code Online (Sandbox Code Playgroud)
报告他们指向的地方。
如果你在交互式 shell 的使用中经常遇到类似的问题,zsh就是你的朋友:
% echo **/*(@^-@)
Run Code Online (Sandbox Code Playgroud)
遵循相同的想法:Glob 限定符 @限制为链接,并且^-@意味着“当启用跟随时,不是 ( ^) 链接 ( @) ( -)。
(另请参阅有关在 python 中查找损坏链接的帖子,实际上这演示了您可以在 Linux 下的所有语言中执行的操作。有关“如何查找损坏的链接”的相关问题的完整答案,请参阅此博客文章。)