You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归查找指定文件并排除含特定子串的子目录及路径处理

筛选并格式化project.json路径

我需要查找所有包含project.json文件的路径,执行以下命令后得到初始结果:

find apps -type f -name "project.json"

结果如下:

apps/sub/frontend-e2e/project.json
apps/sub/frontend/project.json
apps/sub/backend/project.json

但我想实现两个目标:

  • 排除所有最后一级目录包含-e2e的路径
  • 将结果路径的开头apps/和结尾/project.json移除

最终期望得到这样的结果:

sub/frontend
sub/backend

我曾尝试过这个命令,但没能达到预期:

find apps -type f -name "project.json" -not \( -path "*-e2e" -prune \)

可行的Shell命令方案

可以通过find结合sed来实现需求:

find apps -type d -name "*-e2e" -prune -o -type f -name "project.json" -print | sed -e 's/^apps\///' -e 's/\/project.json$//'
  • -type d -name "*-e2e" -prune:直接跳过所有名称带-e2e的目录,避免在这些目录下查找
  • -o -type f -name "project.json" -print:匹配符合条件的project.json文件并输出路径
  • sed命令:通过两次替换,分别移除开头的apps/和结尾的/project.json

JavaScript中的实现方式

如果用JavaScript,我会这样写:

glob.sync('apps/**/project.json', {
    ignore: ['apps/**/*-e2e/project.json']
}).map((path) => {
    // 移除开头的apps/和结尾的/project.json
    return path.replace(/^apps\//, '').replace(/\/project.json$/, '');
})

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:00:36