对 Jenkins 管道中 "findFiles glob:" 输出中的文件名进行排序


steps {
node('master') {
script {
def files = findFiles glob: "*/test/*.*"
files.sort()
echo "${files[i].name}"
}
}
}

我在测试目录中有文件,其中文件名具有模式test1.csv,test2.csvtest100.csv,test101.csv

当我使用files.sort()时,Jenkins先打印test100.csv,test101.csv,然后是test1.csv

如何排序和打印像test1,test2,test3test100等。

请建议。

我建议您不要使用groovy,而是使用sh。在这样的简单任务中滥用groovy被认为是一种不好的做法,除非您在其他步骤/操作中需要该列表。最后,您只想在标准输出中打印它,因此:

ls *.csv | sort -n -k 1.5

使用sort,您可以指定-n, --numeric-sort根据数值进行比较,并指定键定义-k, --key使用键进行排序。1.5的意思是:取第一个字段(整个单词,除非您使用-t指定分隔符),并从第5个字符开始比较,该字符是test之后的第一个数字。

最新更新