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

如何在Jenkins Pipeline中对findFiles返回的文件名按数字自然排序

根因说明

默认调用files.sort()采用的是字典序排序规则,字符串逐字符比对ASCII值时,test100.csv的第三个字符为1,ASCII值小于test2.csv第三个字符2,因此会出现test10*系列文件排在test2之前的异常排序结果。

解决方案

自定义排序规则,提取文件名中的数字序号转为整型后,按照数字大小排序即可符合预期:

steps {
  node('master') {
    script {
      def files = findFiles glob: "*/test/*.*"
      // 提取文件名中的连续数字转为整型,按数字大小排序
      def sortedFiles = files.sort { file ->
        (file.name =~ /\d+/)[0] as int
      }
      // 遍历输出排序后的文件名
      sortedFiles.each { f ->
        echo f.name
      }
    }
  }
}

扩展说明

如果glob规则匹配到非test数字.csv格式的文件,可先过滤再排序,避免正则匹配报错:

def sortedFiles = files
  .findAll { it.name ==~ /test\d+\.csv/ } // 仅保留符合命名规则的文件
  .sort { f -> (f.name =~ /\d+/)[0] as int }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:48:03