x
我想使用 macOS 终端在特定子目录中查找目录y
,但我不知道y
.
该命令find / -type d -name "x"
适用于查找,但系统中x
有许多命名的目录,因此我需要查找该目录下的目录。x
x
y
我试过 -
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 限定符指定生成的路径名必须是目录,并且该模式也应该匹配隐藏名称(与dotglob
in一样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'
这将是最快的替代方案,但只会返回系统上任何用户都可以访问的结果,并且可能不完全是最新的。