在子目录中查找路径目录

在子目录中查找路径目录

bbb我想找到父目录调用的目录名称的路径aaa

例如

/aaa/bbb
/tmp/aaa/bbb
/usr/bin/aaa/bbb
/home/aaa/bbb
/home/aaa/xxx/bbb

所以我写了这样的东西:

find /*/aaa -name bbb

在某些平台上它可以工作,而在某些平台上则不能,并且在任何情况下都/aaa/bbb找不到,因为没有父目录aaa

我想我可以跑,find / -name bbb | grep \/aaa但我想是否有更聪明的东西......?

答案1

-path对于这种情况使用该选项:

find / -type d  -path '*/aaa/bbb'

从查找的手册页中:

文件名与 shell 模式匹配。元字符不处理/.特殊;所以,例如,

find . -path "./sr*sc"

将打印名为“./src/misc”的目录的条目(如果存在)。

跨平台兼容性

编辑:我刚刚注意到标签。

您没有指定find您正在使用哪个版本,以上信息适用于 GNU find。然而,手册页还指出,

谓词 -path 也受 HP-UX find 支持,并且将出现在即将推出的 POSIX 标准版本中。

所以它看起来-path可以在 HP-UX 中使用,但不能在 AIX 中使用(至少不是 AIX 7.1,截至 2015 年 8 月 24 日最新发布)。

答案2

/*/aaa 与 /aaa 不匹配,这就是 find 找不到 /aaa/bbb 的原因

如果您不喜欢从 / 开始查找,并且最近没有像支持 -path 的便携式 sfind 这样的查找,那么您需要一个更好的手动启动列表。

相关内容