如果路径包含符号链接,则使用“-type d”查找不起作用?

如果路径包含符号链接,则使用“-type d”查找不起作用?

我有一个类似这样的目录结构(我已经针对这个问题简化了它):

/dirX
/dirX/d/d1     [and contained files+subdirs]
/dirX/d/d1/d2  [and contained files+subdirs]
/dirX/d/d1/d3  [and contained files+subdirs]
/dirX/d/d4     [and contained files+subdirs]
/dirX/d/d4/d5  [and contained files+subdirs]
/dirX/d/d4/d6  [and contained files+subdirs]
/dirX/d/d7     [and contained files+subdirs]

/dirY
/dirY/idx
/dirY/idx/d2 -> symlink to /dirX/d/d1/d2
/dirY/idx/d5 -> symlink to /dirX/d/d4/d5
/dirY/idx/d7 -> symlink to /dirX/d/d7

我想对 dirY/idx 层次结构中的所有目录执行命令。通常的基本命令是find /dirY/idx -type d -exec CMD {} \;

令我惊讶的是,它在深度 = 1 之后失败。我相当确定它一定是因为find停在符号链接处 - 但我如何防止这种行为并跟踪所有链接?

如果我删除-type d主目录,它会正确地下降到符号链接的目录中,但不会将其自身限制为搜索中的目录。如果我将找到的文件限制为目录,它将停止在符号链接级别。通常,它会在整个层次结构中搜索与主项匹配的文件,但在本例中并非如此。

我已经尝试过符号链接行为选项 -H -L -P (尽管 -P 是默认值) - 我使用的是 FreeBSD - 但没有运气。

我无法使用嵌套查找或查找链接或目录,因为该问题也可能在树中的其他位置任意出现。我相当确定符号链接处理参数是为了解决此类问题,也许我误解了它们的作用。

如何修复我的 find 命令?

相关内容