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

Jenkins流水线如何列出指定文件夹下的所有文件

Jenkins Pipeline 列出指定文件夹内所有文件的实现方案

你现有代码已经能定位到MyScripts文件夹,要获取该文件夹内的所有文件,直接利用findFiles的通配符路径匹配能力即可,两种常用实现方式:

  • 直接定向匹配(推荐,性能更好)
    不需要遍历根目录所有文件,直接给findFiles传入目标路径的通配符,就能直接拿到MyScripts下的所有内容:
stage('Clone and Upload') {
     steps {
       git branch: params.GIT_BRANCH, credentialsId: 'my-bitbucket-id', url: params.GIT_REPO
       script {
           // 递归匹配MyScripts下所有层级的文件,**表示任意子目录,*表示任意文件
           def targetFiles = findFiles glob: 'MyScripts/**/*'
           targetFiles.each { f ->
               // 过滤掉子目录,只输出文件;如果需要连子目录一起列可以去掉这个判断
               if (!f.directory) {
                   echo "文件路径:${f.path},文件大小:${f.length} bytes"
               }
           }
       }
     }
   }
  • 基于现有逻辑拓展
    如果要保留你原来遍历根目录定位文件夹的逻辑,在匹配到MyScripts文件夹后,拼接该文件夹的路径二次调用findFiles即可:
stage('Clone and Upload') {
     steps {
       git branch: params.GIT_BRANCH, credentialsId: 'my-bitbucket-id', url: params.GIT_REPO
       script {
           def files = findFiles excludes: '', glob: ''
           files.each { f -> 
               if (f.directory && f.name == 'MyScripts'){
                   echo "Folder: $f.name"
                   // 遍历当前找到的MyScripts文件夹下的所有内容
                   def innerFiles = findFiles glob: "${f.path}/**/*"
                   innerFiles.each { innerFile ->
                       if (!innerFile.directory) {
                           echo "MyScripts内文件:${innerFile.path}"
                       }
                   }
               }
           }
       }
     }
   }

通配符说明:如果只需要获取MyScripts根目录下的文件、不需要递归遍历它的子文件夹,把glob参数里的**/*替换成*即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:39:50