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 这样的查找,那么您需要一个更好的手动启动列表。