如何调整find命令管道,仅列出指定父目录下的BUILD.bazel文件?
解决BUILD.bazel文件精准查找的问题
你现在的命令输出包含了etl-domain子目录里的BUILD.bazel,想要只保留etl-domain目录下直接的那个文件,可以用以下两种更简洁的方式修改命令:
方式一:直接匹配精确路径
如果明确要找的就是src/services/etl-domain/BUILD.bazel,可以直接用find的-path参数精准匹配:
find src/services/ -type f -name 'BUILD.bazel' -path '*/etl-domain/BUILD.bazel'
方式二:限制查找深度
如果想在etl-domain目录下只查找直接子文件(不深入子目录),可以用-maxdepth参数:
find src/services/etl-domain/ -type f -name 'BUILD.bazel' -maxdepth 1
原命令的问题说明
你原来的命令里,sed -r 's|/[^/]||'会错误修改路径(比如把src/services/改成srcervices/),而且后续的grep只是过滤包含etl-domain/的路径,无法区分是etl-domain本身的文件还是它子目录里的文件,所以会出现多余的结果。
内容的提问来源于stack exchange,提问作者AhmFM
相关产品推荐
相关产品推荐

