使用 macOS 终端在子目录中查找目录

使用 macOS 终端在子目录中查找目录

x我想使用 macOS 终端在特定子目录中查找目录y,但我不知道y.

该命令find / -type d -name "x"适用于查找,但系统中x有许多命名的目录,因此我需要查找该目录下的目录。xxy

我试过 -

  • find / -type d -name "/y/x"或者
  • find / -type d -name "y/x"或者
  • find / -type d -name "../y/x"

但这些并没有告诉我想要的结果。

答案1

使用-path初级:

find / -path '*y/x'
-path pattern
         True if the pathname being examined matches pattern.  Special shell pattern matching characters (``['', ``]'', ``*'', and ``?'') may be used as part of
         pattern.  These characters may be matched explicitly by escaping them with a backslash (``\'').  Slashes (``/'') are treated as normal characters and do
         not have to be matched explicitly.

答案2

zsh外壳:

print -rC1 -- /**/y/x(/D)

glob**向下匹配到子目录,并且(/D)glob 限定符指定生成的路径名必须是目录,并且该模式也应该匹配隐藏名称(与dotglobin一样bash)。

或者版本 4 或更高版本中的近似等效项bash(即,从 macOS 上的 Homebrew 安装,而不是默认安装bash):

shopt -s globstar failglob dotglob
printf '%s\n' /**/y/x/

shellglobstar选项bash允许使用**通配模式,而failglob如果没有匹配则使模式匹配失败并出现错误。该failglob行为是 中的默认行为zsh,正如 的可用性一样**

find不过可能会更快:

find / -type d -path '*/y/x'

这将x在.y/

或者,您可能有一个功能locate实用程序,您可以使用它

locate '*/y/x'

这将是最快的替代方案,但只会返回系统上任何用户都可以访问的结果,并且可能不完全是最新的。

相关内容