我能够找到一个命令来获取仅有断开链接的列表,但不能找到“工作”符号链接
find -H mydir -type l
我怎么能这样做呢?
如果我在mydir
中有这些文件:
foo
bar
bob
carol
如果它们都是符号链接,但bob
指向不存在的文件,我想看
foo
bar
carol
答案 0 :(得分:4)
使用find(1)
$ find . -type l -not -xtype l
此命令查找在关注后停止链接的链接 - 即不间断链接。 (请注意,它们可能指向普通或特殊文件,目录或其他。使用-xtype f
而不是-not -xtype l
来查找指向普通文件的链接。)
$ find . -type l -not -xtype l -ls
报告他们指向的地方。
如果您在交互式shell使用中经常遇到类似的问题,zsh是您的朋友:
% echo **/*(@^-@)
遵循相同的想法:Glob qualifier @
限制链接,^-@
表示“不是^
”链接(@
)已启用(-
)。
(另请参阅this post about finding broken links in python,实际上这展示了您可以在Linux下的所有语言中执行的操作。请参阅this blog post以获取有关“如何找到已损坏”相关问题的完整答案 links“。)
答案 1 :(得分:2)
这将仅显示(LINUX)符号链接,这些链接是指向实际存在的常规文件的链接:
find DIR1 -type l -xtype f -ls
从xtype选项的“find”(LINUX)文档:“对于符号链接,-xtype检查-type不检查的文件类型”
此选项将显示指向实际存在的目录的符号链接:
find DIR1 -type l -xtype d -ls
答案 2 :(得分:1)
一个bash解决方案:
find . -type l -print | while read src
do
[[ -e "$src" ]] && echo $src
done
所以,查找所有符号链接并检查是否存在 - 如果存在 - >回应它