如何停止递归符号链接

时间:2019-07-08 19:20:22

标签: symlink ln

我有一个以下文件夹:

  • 文件夹A
    • 文件夹B(这是指向文件夹A的符号链接)

问题在于,当我访问文件夹B时,由于文件夹B位于文件夹A内,因此我可以无限深入(例如,文件夹A>文件夹B>文件夹B>文件夹B)。

通过文件夹A访问文件夹B后,有什么方法可以忽略它吗?

非常感谢您!

2 个答案:

答案 0 :(得分:0)

find命令可检测符号链接循环,并将显示警告消息,而不是反复遍历它们。例如,使用-L选项跟随符号链接可能会显示以下警告:

$ find -L /some/path

find: File system loop detected; `/some/path/link' is part of the same file system loop as `/some/path'.

在手册页中:

          The find utility shall detect infinite loops; that is,
          entering a previously visited directory that is an ancestor of
          the last file encountered.  When it detects an infinite loop,
          find shall write a diagnostic message to standard error and
          shall either recover its position in the hierarchy or
          terminate.

答案 1 :(得分:0)

致所有看这里的程序员(cmdline 工具问题应该转至 unix.stackexchange.com):

您应该知道 Linux/BSD 函数 fts_open() 为您提供了一个易于使用的迭代器,用于遍历所有子目录内容,同时还检测此类符号链接递归。

大多数命令行工具使用这个函数来为他们处理这种情况。那些不经常遇到符号链接递归问题的人,因为“手动”执行此操作很困难(任何知道它的人都应该改用上述函数)。