我有一个清单,其中包含文件名(变更日志)在Jenkins管道。我希望排序的基础上,文件扩展名的列表。如果您是一个数据库管理员,那么您d.py。我想将此列表排序如下-lines = [c.json,d.py,b.sql,e.txt,a.yaml]先谢谢你。
qcbq4gxm1#
您可以将Groovy Sort与自定义比较器一起使用。请参考以下示例。
pipeline { agent any stages { stage('Test') { steps { script { def lines = ["a.yaml", "b.sql", "c.json", "d.py", "e.txt"] echo "Not sorted: $lines" sortFiles(lines) echo "Sorted: $lines" } } } } } @NonCPS def sortFiles(def files) { return files.sort { s1, s2 -> s1.substring(s1.lastIndexOf('.') + 1) <=> s2.substring(s2.lastIndexOf('.') + 1) } }
将不带扩展名的文件置于顶部
@NonCPS def sortFiles(def files) { return files.sort { s1, s2 -> def s1Index = s1.lastIndexOf('.') def s2Index = s2.lastIndexOf('.') if((s1Index == -1)) { // S1 doesn't have an extension, S1 comes first return -1 } else if (s2Index == -1) { // S1 have an extension but S2 doesn't so s2 comes first return 1 } else { return s1.substring(s1Index + 1) <=> s2.substring(s2Index + 1) } } }
1条答案
按热度按时间qcbq4gxm1#
您可以将Groovy Sort与自定义比较器一起使用。请参考以下示例。
更新
将不带扩展名的文件置于顶部