我有一个类似这样的目录结构(我已经针对这个问题简化了它):
/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 命令?