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

如何在paul和matt目录递归查找kustomization.yaml并执行多命令?

需求说明

我有paul和matt两个目录,各自包含若干子文件夹,其中可能存在或后续会出现kustomization.yaml文件。我需要在所有包含该文件的路径下执行多条命令,手动操作示例如下:

cd paul
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml
cd paul/test
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml
cd paul/test/test1
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml
---
cd matt
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml
cd matt/test
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml
cd matt/test/test1
somecommand1 kustomization.yaml
somecommand2 kustomization.yaml

我正在学习Bash,想要编写一个能在GitLab流水线中调用的脚本,通过递归查找这两个目录中的kustomization.yaml文件,对每个找到的文件执行x、y、z命令。

解决方案

使用find递归查找目标文件,结合循环处理每个文件所在目录,批量执行指定命令。

完整Bash脚本

#!/bin/bash

# 指定要扫描的根目录
ROOT_DIRS=("paul" "matt")

# 定义需要执行的命令(替换为你的x、y、z命令)
EXEC_COMMANDS=(
  "somecommand1 kustomization.yaml"
  "somecommand2 kustomization.yaml"
  # 可继续添加更多命令,格式保持一致
)

# 遍历每个根目录
for root in "${ROOT_DIRS[@]}"; do
  # 递归查找所有kustomization.yaml文件
  find "$root" -type f -name "kustomization.yaml" | while read -r yaml_path; do
    # 获取文件所在目录
    yaml_dir=$(dirname "$yaml_path")
    
    # 进入目标目录,失败则跳过当前文件
    cd "$yaml_dir" || { echo "警告:无法进入目录 $yaml_dir,跳过"; continue; }
    
    # 依次执行所有命令
    for cmd in "${EXEC_COMMANDS[@]}"; do
      echo "执行命令: $cmd (目录: $yaml_dir)"
      # 执行命令,若需忽略错误可在末尾加 || true
      eval "$cmd"
    done
    
    # 返回脚本初始目录,避免路径混乱
    cd - > /dev/null
  done
done

核心细节解释

  • find命令:-type f确保只匹配文件(排除同名目录),-name "kustomization.yaml"精准定位目标文件,自动递归遍历所有子文件夹。
  • 目录切换:找到文件后先进入其所在目录,执行完命令后用cd -返回脚本启动目录,避免后续循环出现路径错误。
  • 命令数组:把需要执行的命令放在数组中,便于统一修改和扩展,替换数组内的内容即可适配你的实际需求。
  • 错误处理:cd "$yaml_dir" || { ... }捕获目录无法进入的异常,避免脚本直接中断。

GitLab流水线集成

将脚本保存为process_kustomizations.sh,在你的.gitlab-ci.yml中添加以下阶段:

process-kustomizations:
  stage: deploy # 根据你的流水线流程调整阶段名称
  script:
    - chmod +x process_kustomizations.sh
    - ./process_kustomizations.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:08:09